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

4589
nipponese

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

My /usr/local/var/mysql/<name>.local.errliest es 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 
8

3 Antworten auf die Frage

9
Hunter

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

Entfernen Sie alle Versionen von MySQL (ich hatte 5.7.21, 5.7.22 und 8.0.11):brew uninstall --force mysql

Bestätigen Sie den Ausbau und die Reparatur : brew services listund dannbrew doctor

Original MySQL umbenennen :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 zunächst diesen Fehler 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 Installationsanweisungen gebe ich die folgenden Optionen ein Y, 0, Y, N, N, Y, Y.

Upgrade von MySQL Workbench Danach konnte ich immer noch keine Verbindung mit MySQL Workbench (GA 6.3.10) herstellen, obwohl MySQL nun endgültig gestartet wurde. Ich habe die folgende Fehlermeldung erhalten.

"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 Entwicklungsversion) heruntergeladen. Ich habe die Benutzeroberfläche 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 mich mit der Workbench unter Verwendung von root und dem neuen Passwort verbinden, das ich während der sicheren Installation eingerichtet habe.

Bereinigen (umbenanntes Verzeichnis und dessen Inhalt entfernen):rm -r /usr/local/var/old.mysql

Dies wurde gestern vom ursprünglichen Poster eindeutig [bereits selbst beantwortet] (https://superuser.com/a/1332979/167207). JakeGould vor 5 Jahren 1
Vielleicht war es schon eine Antwort von selbst, aber nicht so essentiell für diejenigen von uns, die genau nach den erforderlichen Schritten suchen. Sturm vor 5 Jahren 3
Was ist der Zweck des Umbenennens von `/ usr / local / var / mysql`, anstatt es einfach zu entfernen? `old.mysql` wird nirgendwo verwendet, außer beim Aufräumen. Ich frage, weil es hilfreich wäre, MySQL unter Beibehaltung der Datenbanken neu zu installieren. user2763030 vor 5 Jahren 0
Der Grund, warum ich es getan habe, war nur für den Fall, dass ich später eine der Daten wollte. Alle meine lokalen Datenbanken waren / sind Klone unserer Produktionsumgebung, also habe ich nichts gesichert und nach dem Upgrade-Vorgang alles synchronisiert. Ich glaube, Sie könnten die Datenbanken aus früheren Versionen verwenden, obwohl mysql 8 die Verschlüsselungsregeln für Kennwö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. Tut mir leid, dass ich nicht besonders gut informiert bin. Ich hoffe das hilft. Hunter vor 5 Jahren 0
8
johnsampson

tldr; Eine neue Version von mysql wurde über Homebrew installiert. Stellen Sie die zuvor installierte Version wieder her.

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

Die ganze Geschichte ist, dass Sie wahrscheinlich eine neuere Version von MySQL 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 Folgendes gesehen:

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

Ich überprüfte mysql --versionund die neuere 8.0.11 lief.

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 

Alles sollte wieder funktionsfähig sein.

Wie unterscheidet sich dies im Endzweck von der Antwort [bereits selbst beantwortete und akzeptierte Antwort] (https://superuser.com/a/1332979/167207)? JakeGould vor 5 Jahren 1
@JakeGould Answer [167207] (https://superuser.com/a/1332979/167207) schlägt vor, dass Sie Ihren gesamten Datenbankinhalt löschen. Meine Antwort schlägt die Verwendung von "brew switch" vor, was nicht der Fall ist. johnsampson vor 5 Jahren 3
Meinetwegen. Guter Rat. +1 JakeGould vor 5 Jahren 0
Gute Antwort. Arbeitete für mich rajkuppus vor 5 Jahren 0
3
nipponese

Ich glaube, das Problem war eine vorherige Installation in /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.

Entfernt `/ usr / local / var / mysql` Ihren gesamten Datenbankinhalt? Nicodemuz vor 5 Jahren 0
@Nicodemuz yup. nipponese vor 5 Jahren 0
Sie sollten das wahrscheinlich als Warnung hervorheben! Nicodemuz vor 5 Jahren 3