MySQL kann nicht gestartet werden: InnoDB: Upgrade nach einem Absturz wird nicht unterstützt

16

Ich versuche, MySQL von einer Homebrew-Installation aus auszuführen, aber es schlägt immer wieder fehl, wenn ich es versuche mysql.server start.

Mein /usr/local/var/mysql/<name>.local.errliest so und sendet diese Fehlermeldung alle paar Sekunden.

2018-06-20T20:38:54.6NZ mysqld_safe Logging to '/usr/local/var/mysql/<computer name>.local.err'.
2018-06-20T20:38:54.6NZ mysqld_safe Starting mysqld daemon with databases from /usr/local/var/mysql
2018-06-20T20:38:54.379228Z 0 [System] [MY-010116] [Server] /usr/local/opt/mysql/bin/mysqld (mysqld 8.0.11) starting as process 6271
2018-06-20T20:38:54.383128Z 0 [Warning] [MY-010159] [Server] Setting lower_case_table_names=2 because file system for /usr/local/var/mysql/ is case insensitive
2018-06-20T20:38:54.449869Z 1 [ERROR] [MY-012526] [InnoDB] InnoDB: Upgrade after a crash is not supported. This redo log was created with MySQL 5.7.20. Please follow the instructions at http://dev.mysql.com/doc/refman/8.0/en/upgrading.html
2018-06-20T20:38:54.449947Z 1 [ERROR] [MY-012930] [InnoDB] InnoDB: Plugin initialization aborted with error Generic error.
2018-06-20T20:38:54.919197Z 1 [ERROR] [MY-011013] [Server] Failed to initialize DD Storage Engine.
2018-06-20T20:38:54.919769Z 0 [ERROR] [MY-010020] [Server] Data Dictionary initialization failed.
2018-06-20T20:38:54.919814Z 0 [ERROR] [MY-010119] [Server] Aborting
2018-06-20T20:38:54.920978Z 0 [System] [MY-010910] [Server] /usr/local/opt/mysql/bin/mysqld: Shutdown complete (mysqld 8.0.11)  Homebrew.
2018-06-20T20:38:54.6NZ mysqld_safe mysqld from pid file /usr/local/var/mysql/bae.local.pid ended
Nipponese
quelle

Antworten:

17

Ich hatte genau die gleichen Fehler in meinem Protokoll. Nur um die Antwort von Nipponese auszubauen.

Entfernen Sie alle Versionen von MySQL (ich hatte 5.7.21, 5.7.22 und 8.0.11):

brew uninstall --force mysql

Entfernen und Reparieren bestätigen :

brew services list und dann brew doctor

Benennen Sie das ursprüngliche MySQL um :

mv /usr/local/var/mysql /usr/local/var/old.mysql

Installieren Sie das neueste MySQL (derzeit 8.0.11):

brew install mysql

MySQL Secure Install :

/usr/local/bin/mysql_secure_installation

Ich habe diesen Fehler zunächst erhalten: Error: Access denied for user 'dbadmin'@'localhost' (using password: YES)

Ich verwende eine Konfiguration auf Benutzerebene. Also habe ich .my.cnf umbenannt und die sichere Installation erneut ausgeführt.

mv /Users/[your username]/.my.cnf /Users/[your username]/old.my.cnf /usr/local/bin/mysql_secure_installation

Bei den Installationsaufforderungen gebe ich die folgenden Optionen ein Y, 0, Y, N, N, Y, Y.

Upgrade der MySQL Workbench Danach konnte ich immer noch keine Verbindung zur MySQL Workbench (GA 6.3.10) herstellen, obwohl MySQL anscheinend endlich gestartet wurde. Ich habe die folgende Fehlermeldung erhalten.

"Das Authentifizierungs-Plugin 'caching_sha2_password' kann nicht geladen werden: dlopen (/usr/local/mysql/lib/plugin/caching_sha2_password.so, 2): Bild nicht gefunden"

Um dies zu beheben, habe ich MySQL Workbench 8.0.11 rc (die Development Release-Version) heruntergeladen. Ich habe die GUI verwendet, um die Benutzer hinzuzufügen, die ich hatte, bevor ich mich an die neuen Kennwortregeln hielt. Ich habe ~ / .my.cnf mit dem sichereren Passwort aktualisiert und umbenannt. Dann meine DBs wiederhergestellt.

Zu diesem Zeitpunkt konnte ich über root und das neue Kennwort, das ich während der sicheren Installation eingerichtet hatte, eine Verbindung zur Workbench herstellen.

Aufräumen (umbenanntes Verzeichnis und dessen Inhalt entfernen):

rm -r /usr/local/var/old.mysql

Jäger
quelle
1
Dies hat das Originalplakat gestern eindeutig schon selbst beantwortet .
JakeGould
4
Vielleicht wurde es bereits selbst beantwortet, aber nicht mit so wesentlichen Details für diejenigen von uns, die nach den genauen erforderlichen Schritten suchen.
Sturm
Was ist der Zweck des Umbenennens, /usr/local/var/mysqlanstatt es gleich zu Beginn zu entfernen? old.mysqlwird nur während des Bereinigungsschritts verwendet. Ich frage, weil es hilfreich wäre, MySQL unter Beibehaltung der Datenbanken neu zu installieren.
user2763030
Der Grund, warum ich es getan habe, war nur für den Fall, dass ich später Daten haben wollte. Alle meine lokalen Datenbanken waren / sind Klone unserer Produktionsumgebung, daher habe ich nichts gesichert und alles nach dem Upgrade-Prozess einfach synchronisiert. Ich glaube, Sie könnten die Datenbanken aus früheren Versionen verwenden, obwohl mysql 8 die Verschlüsselungsregeln für Passwörter aktualisiert hat. Ich weiß, dass Sie Ihrer .my.cnf eine Zeile hinzufügen können, um die ältere Auth-Methode anstelle von sha2 zu verwenden. Entschuldigung, ich bin in diesem Bereich nicht besonders gut informiert. Ich hoffe das hilft.
Hunter
Wenn Sie Error: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)während des Laufens erhalten /usr/local/bin/mysql_secure_installation, müssen Sie möglicherweise einfach den MySQL-Server wie ich starten. Sie können dies tun, indem Sie "mysql.server start" ausführen.
Richie Thomas
12

tldr; Eine neue Version von MySQL wurde über Homebrew installiert. Kehren Sie zur zuvor installierten Version zurück.

brew switch mysql X.X.XX` and `brew services restart mysql 

Die ganze Geschichte ist, dass Sie wahrscheinlich eine neuere Version von MySQL mit installiert haben brew upgrade. Überprüfen Sie die Ausgabe von brew info mysql. Möglicherweise sehen Sie mehr als eine Version.

In meinem Fall habe ich beide gesehen:

/usr/local/Cellar/mysql/5.7.17
/usr/local/Cellar/mysql/8.0.11

Ich habe nachgesehen mysql --versionund die neuere Version 8.0.11 wurde ausgeführt.

Homebrew enthält den switchBefehl, mit dem Sie genau das zwischen Diensten ausführen können.

Führen Sie dies aus, indem Sie die Version durch Ihre eigene ersetzen:

brew switch mysql 5.7.17

Starten Sie MySQL neu:

brew services restart mysql

Alle sollten wieder funktionsfähig sein.

Johnsampson
quelle
1
Wie unterscheidet sich dies im Endzweck von der bereits selbst beantworteten und akzeptierten Antwort ?
JakeGould
4
@JakeGould Answer 167207 schlägt vor, dass Sie Ihren gesamten Datenbankinhalt löschen. Meine Antwort schlägt vor, zu verwenden, brew switchwas nicht.
Johnsampson
Meinetwegen. Guter Rat. +1
JakeGould
1
Gute Antwort. Arbeitete für mich
Kuppuraj
1
Schade, dass ich das nicht gefunden habe, bevor ich jede Version von MySQL deinstalliert habe. FML
andrewtweber
3

Ich sehe aus, als ob das Problem eine frühere Installation in war /usr/local/var/mysql.

Nach der Deinstallation über Homebrew, dem Entfernen /usr/local/var/mysql, Ausführen brew doctorund erneuten Installieren über Homebrew wurde das Problem behoben.

Nipponese
quelle
Wird durch Entfernen der /usr/local/var/mysqlgesamte Datenbankinhalt entfernt?
Nikodemuz
@Nicodemuz yup.
Nipponese
6
Sie sollten das wahrscheinlich als Warnung hervorheben!
Nikodemuz