Das Upgrade auf MySQL 5.7.15 stürzt unter Ubuntu 16.04 ab

13

Letzte Nacht habe ich versucht, mein Ubuntu-Betriebssystem zu aktualisieren, und MySQL 5.7.15 war eine der Änderungen. Das Upgrade scheint erfolgreich zu sein, da mysql ordnungsgemäß funktioniert, aber der Installationsprozess mit dieser Meldung nicht mehr funktioniert:

This installation of MySQL is already upgraded to 5.7.15, 
use --force if you still need to run mysql_upgrade

Ich kann den Installationsvorgang nicht regelmäßig abbrechen und muss ihn nur beenden. Daher kann es zu Problemen kommen und auch bei jeder anderen Installation (in der Zukunft) wird erneut versucht, dies zu tun.

Wie kann dieses Upgrade verhindert oder behoben werden?

Omid
quelle

Antworten:

12

Diese Lösung hat mein Problem gelöst:

  1. Sichern Sie Ihre Datenbankdateien mit folgenden Berechtigungen:

    sudo cp -avt /your/backup/directory /var/lib/mysql /etc/mysql/my.cnf
    
  2. Löschen Sie MySQL-Dateien:

    sudo rm -rv /etc/mysql 
    
  3. Entfernen Sie MySQL vollständig, indem Sie Folgendes ausführen:

    sudo apt purge mysql-server mysql-server-5.7 mysql-server-core-5.7 mysql-client-5.7 mysql-client-core-5.7
    

    Die Verwendung von Synaptic wird empfohlen.

  4. Erstellen Sie diese Ordner:

    sudo mkdir -p /etc/mysql/conf.d
    

    mysql setup hat das nicht automatisch gemacht und ich weiß nicht warum.

  5. Installieren Sie MySQL erneut

    sudo apt install mysql-server
    

    Ich habe sudo apt install lamp-server^stattdessen andere Abhängigkeiten für die PHP-Entwicklung installiert.

  6. Stoppen Sie MySQL:

    sudo service mysql stop 
    
  7. Wiederherstellen von Datenbanken und Dateien:

    sudo cp -a /your/backup/directory/mysql /var/lib   
    sudo cp /your/backup/directory/my.cnf /etc/mysql 
    
  8. Starten Sie MySQL neu:

    sudo service mysql start 
    
Omid
quelle
1
dpkg: Fehler beim Aufräumen: Nach der Installation installiertes Subprozess-Skript hat den Fehler-Exit-Status 1 zurückgegeben. Bei der Verarbeitung sind Fehler aufgetreten: mysql-server-5.7
Stevie G
Das Wichtigste ist das Entfernen von sudo rm /var/cache/debconf/config.dat, sudo rm /var/cache/debconf/passwords.datund sudo rm /var/cache/debconf/templates.dat. Dann alles spülen. Führen Sie dann einen Systemneustart durch.
Stevie G
Ich hatte das gleiche Problem und löste es mit diesem Verfahren. Ich empfehle einen Neustart des Systems nach dem Löschen von MySQL. Es scheint, dass dies das von Stevie gemeldete Problem verhindert.
Tsutomu
4

Ich habe es geschafft, dies zu beheben, ohne alles zu spülen. Es scheint, dass das Problem darin besteht, dass die Sys-Schemadatenbank nie erstellt wurde. Hier ist die Lösung:

  1. Klonen Sie https://github.com/mysql/mysql-sys und die CD in den geklonten Ordner.
  2. Führen Sie in einem Terminal mysql -u root -p <./sys_57.sql (oder sys_56.sql, abhängig von Ihrer Version) aus.

Viel Spaß beim erneuten Arbeiten mit mysql_upgrade. Ich schätze, das war wahrscheinlich ein Durcheinander bei der Aktualisierung von Skripten.

Asefa Tasew
quelle
Ja, es ist ein Problem bei der Aktualisierung von Datenbanken. Leider kann ich Ihre Lösung nicht mehr testen, um festzustellen, ob sie funktioniert oder nicht.
Omid
Ich habe versucht , diese Lösung auf meine MySQL 5.7.22 Installation, berichtete „Diese Installation von MySQL bereits auf 5.7.22 aktualisiert wird, verwenden --force wenn Sie noch laufen mysql_upgrade müssen“ und es funktionierte wie ein Zauber
henrik
2

Ich hatte auch dieses Problem. Jedes Mal, wenn ich apt get gestartet und installiert habe, blieb der Prozess nach oder während des DB-Updates hängen. Keine der anderen Lösungen hier hat funktioniert.

Am Ende habe ich gelöscht

sudo apt purge mysql-server mysql-server-5.7

Und folgte der manuellen Installation aus den Anweisungen für MySQL hier

Ich habe dann das Datenverzeichnis mit meinen alten Daten überschrieben

sudo cp -Rfv /var/lib/mysql /usr/local/mysql/data

und fügte schließlich einen Systemd-Dienst wie diesen hinzu

/lib/systemd/system/mysql.service

[Unit]
Description=MySQL Server
After=syslog.target
After=network.target

[Service]
Type=simple
PermissionsStartOnly=true
ExecStartPre=/bin/mkdir -p /var/run/mysqld
ExecStartPre=/bin/chown mysql:mysql -R /var/run/mysqld
ExecStart=/usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --plugin-dir=/usr/lib/mysql/plugin --log-error=/var/log/mysql/error.log --pid-file=/var/run/mysqld/mysqld.pid --socket=/var/run/mysqld/mysqld.sock --port=3306
TimeoutSec=300
PrivateTmp=true
User=mysql
Group=mysql
WorkingDirectory=/usr

[Install]
WantedBy=multi-user.target

Dann rannte

# systemctl daemon-reload
# systemctl enable mysql
# systemctl start mysql

Dann schien alles wie zuvor zu funktionieren und mysql brachte keine Systemaktualisierungen zustande

Der Nachteil ist natürlich, dass ich in Zukunft manuelle Updates durchführen muss.

Jeremy French
quelle
1

Wenn Ihr root @ localhostKonto kein Passwort hat, dann gibt es einen Fehler im Postinstall-Prozess, wie hier angegeben (siehe insbesondere den letzten Kommentar des Threads).

  • Bereinigen Sie alle TMP*Dateien in/var/lib/mysql-files
  • Bearbeiten Sie die Datei /var/lib/dpkg/info/mysql-server-5.7.postinstund kommentieren Sie (mit #) die Zeile 370:

    echo "ALTER USER 'root'@'localhost' IDENTIFIED WITH 'auth_socket';" >> "$initfile"

  • führe es nochmals aus sudo dpkg --configure -a

Gab - über Monica übrig
quelle
Oh mein Lieber! <3 Sie haben mir das Leben gerettet: p Hinweis für die Nachwelt: Möglicherweise möchten Sie weitere mysql-Aktualisierungen verhindern (die auf die gleiche Weise fehlschlagen), indem Sieapt-mark hold mysql-server-5.7
Gab - verwenden, der