web-dev-qa-db-fra.com

Impossible de démarrer mysql: InnoDB: la mise à niveau après un blocage n'est pas prise en charge

J'essaie d'exécuter MySQL à partir d'une installation Homebrew, mais l'échec persiste lorsque j'essaie mysql.server start.

Mon /usr/local/var/mysql/<name>.local.err se lit comme tel et continue d'envoyer ce message d'erreur toutes les quelques secondes.

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
12
nipponese

J'ai eu exactement les mêmes erreurs dans mon journal. Juste pour construire la réponse de Nipponese.

Supprimer toutes les versions de MySQL (j'avais les versions 5.7.21, 5.7.22 et 8.0.11): brew uninstall --force mysql

Confirmation de la suppression et de la réparation : brew services list puis brew doctor

Renommez MySQL d'origine : mv /usr/local/var/mysql /usr/local/var/old.mysql

Installez la dernière version de MySQL (actuellement 8.0.11): brew install mysql

Installation sécurisée de MySQL : /usr/local/bin/mysql_secure_installation

J'ai initialement reçu cette erreur: Error: Access denied for user 'dbadmin'@'localhost' (using password: YES)

J'utilise une configuration de niveau utilisateur. Donc, je ai renommé .my.cnf et ai relancé l’installation sécurisée.

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

Sur les invites d’installation, j’ai saisi les options suivantes Y, 0, Y, N, N, Y, Y.

Mettre à niveau MySQL Workbench Après cela, je ne pouvais toujours pas me connecter à MySQL Workbench (GA 6.3.10), bien que MySQL ait finalement démarré. Je recevais le message d'erreur suivant Invite.

"Le plugin d'authentification 'caching_sha2_password' ne peut pas être chargé: dlopen (/usr/local/mysql/lib/plugin/caching_sha2_password.so, 2): image non trouvée"

Pour résoudre ce problème, j'ai téléchargé MySQL Workbench 8.0.11 rc (la version de la version de développement). J'ai utilisé l'interface graphique pour ajouter les utilisateurs que je possédais avant de respecter les nouvelles règles en matière de mot de passe. J'ai mis à jour et renommé ~/.my.cnf avec le mot de passe plus sécurisé. Puis restauré mes bases de données.

À ce stade, j'ai pu me connecter à Workbench à l'aide de root et du nouveau mot de passe que j'ai configuré lors de l'installation sécurisée.

Nettoyer (supprime le répertoire renommé et son contenu): rm -r /usr/local/var/old.mysql

15
Hunter

tldr; Une nouvelle version de mysql a été installée via Homebrew. Revenez à la version précédemment installée.

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

L'histoire complète est que vous avez probablement installé une version plus récente de mysql avec brew upgrade. Examinez le résultat de brew info mysql. Vous pouvez voir plus d'une version.

Dans mon cas, j'ai vu les deux choses suivantes:

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

J'ai vérifié mysql --version et la nouvelle version 8.0.11 était en cours d'exécution.

Homebrew inclut la commande switch qui vous permet de faire exactement cela entre services.

Exécutez ceci en remplaçant la version par la vôtre:

brew switch mysql 5.7.17

Redémarrez mysql:

brew services restart mysql

Tout devrait être remis en état de marche.

11
johnsampson

J'ai l'impression que le problème était une installation précédente dans /usr/local/var/mysql.

Après la désinstallation via homebrew, la suppression de /usr/local/var/mysql, l'exécution de brew doctor et la réinstallation via homebrew, le problème a disparu.

3
nipponese