Impossibile avviare mysql: InnoDB: l'aggiornamento dopo un arresto anomalo non è supportato


16

Sto cercando di eseguire MySQL da un'installazione Homebrew, ma continua a fallire quando provo mysql.server start.

Mio /usr/local/var/mysql/<name>.local.errlegge così, e continua a inviare questo messaggio di errore ogni pochi secondi.

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

Risposte:


17

Ho avuto gli stessi errori nel mio registro. Solo per costruire la risposta di Nipponese.

Rimuovi tutte le versioni di MySQL (avevo 5.7.21, 5.7.22 e 8.0.11):

brew uninstall --force mysql

Conferma rimozione e riparazione :

brew services list e poi brew doctor

Rinomina MySQL originale :

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

Installa MySQL più recente (attualmente 8.0.11):

brew install mysql

MySQL Secure Install :

/usr/local/bin/mysql_secure_installation

Inizialmente ho ricevuto questo errore: Error: Access denied for user 'dbadmin'@'localhost' (using password: YES)

Sto usando una configurazione a livello di utente. Così ho rinominato .my.cnf ed eseguito di nuovo l'installazione sicura.

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

Ai prompt di installazione ho inserito le seguenti opzioni Y, 0, Y, N, N, Y, Y.

Aggiorna MySQL Workbench Dopo di che non riuscivo ancora a connettermi con MySQL Workbench (GA 6.3.10) anche se alla fine sembrava aver avviato MySQL. Stavo ricevendo il seguente messaggio di errore.

"Impossibile caricare il plug-in di autenticazione 'caching_sha2_password': dlopen (/usr/local/mysql/lib/plugin/caching_sha2_password.so, 2): immagine non trovata"

Per risolvere questo problema, ho scaricato MySQL Workbench 8.0.11 rc (la versione della versione di sviluppo). Ho usato la GUI per aggiungere gli utenti che avevo prima di aderire alle nuove regole della password. Ho aggiornato e rinominato ~ / .my.cnf con la password più sicura. Quindi ripristinato i miei DB.

A questo punto sono stato in grado di connettermi con workbench usando root e la nuova password che ho impostato durante l'installazione sicura.

Clean Up (rimuove la directory rinominata e il suo contenuto):

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


1
Questo è stato chiaramente già auto-risolto ieri dal poster originale.
Jake Gould il

4
Forse aveva già ottenuto una risposta, ma non con dettagli così essenziali per quelli di noi che cercavano i passi esatti necessari.
Sturm,

Qual è lo scopo di rinominare /usr/local/var/mysqlpiuttosto che rimuoverlo all'inizio? old.mysqlnon viene utilizzato da nessuna parte tranne durante la fase di pulizia. Chiedo perché sarebbe utile reinstallare MySQL preservando i database.
user2763030,

Il motivo per cui l'ho fatto è stato nel caso in cui volessi qualcuno dei dati in seguito. Tutti i miei database locali erano / sono cloni del nostro ambiente di produzione, quindi non ho eseguito il backup di nulla e ho semplicemente sincronizzato tutto dopo il processo di aggiornamento. Credo che potresti usare i database delle versioni precedenti anche se mysql 8 ha aggiornato le regole di crittografia per le password. So che puoi aggiungere una riga al tuo .my.cnf per usare il vecchio metodo auth invece di sha2. Mi dispiace non sono super informato su quella parte. Spero che questo possa essere d'aiuto.
Hunter,

Se riesci a Error: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)correre /usr/local/bin/mysql_secure_installation, potresti dover semplicemente avviare il server MySql come ho fatto io. Puoi farlo eseguendo "mysql.server start".
Richie Thomas,

12

TLDR; Una nuova versione di mysql è stata installata tramite Homebrew. Ripristina la versione precedentemente installata.

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

La storia completa è che probabilmente hai installato una versione più recente di mysql con brew upgrade. Rivedere l'output di brew info mysql. Potresti vedere più di una versione.

Nel mio caso, ho visto entrambi i seguenti:

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

Ho controllato mysql --versione il più recente 8.0.11 correvo.

Homebrew include il switchcomando che ti consente di fare proprio quello tra i servizi.

Esegui questo sostituendo la versione con la tua:

brew switch mysql 5.7.17

Riavvia mysql:

brew services restart mysql

Tutto dovrebbe essere di nuovo in ordine.


1
In che modo differisce nello scopo finale dalla risposta già autorizzata e accettata ?
Jake Gould,

4
@JakeGould Risposta 167207 suggerisce di eliminare tutto il contenuto del database. La mia risposta suggerisce di usare ciò brew switchche non lo fa.
johnsampson,

Giusto. Buon Consiglio. +1
Jake:

1
Buona risposta. Ha funzionato per me
Kuppuraj il

1
Peccato che non l'ho trovato prima di disinstallare tutte le versioni di mysql. FML
andrewtweber,

3

Sembra che il problema riguardasse un'installazione precedente in /usr/local/var/mysql.

Dopo la disinstallazione tramite homebrew, la rimozione /usr/local/var/mysql, l'esecuzione brew doctore la reinstallazione tramite homebrew, il problema è scomparso.


La rimozione /usr/local/var/mysqlrimuoverà tutto il contenuto del database?
Nicodemuz,

@Nicodemuz yup.
Nipponese,

6
dovresti probabilmente evidenziarlo come un avvertimento!
Nicodemuz,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.