无法启动mysql:InnoDB:不支持崩溃后升级


16

我正在尝试从Homebrew安装中运行MySQL,但是尝试时它始终会失败mysql.server start

我这样/usr/local/var/mysql/<name>.local.err阅读,并每隔几秒钟不断发送此错误消息。

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

Answers:


17

我的日志中有完全相同的错误。只是为了增强Nipponese的答案。

删除所有版本的MySQL(我有5.7.21、5.7.22和8.0.11):

brew uninstall --force mysql

确认拆卸和维修

brew services list 接着 brew doctor

重命名原始MySQL

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

安装最新的MySQL(目前是8.0.11):

brew install mysql

MySQL安全安装

/usr/local/bin/mysql_secure_installation

我最初收到此错误: Error: Access denied for user 'dbadmin'@'localhost' (using password: YES)

我正在使用用户级别的配置。因此,我重命名了.my.cnf并再次运行了安全安装。

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

在安装提示中,我输入以下选项Y, 0, Y, N, N, Y, Y

升级MySQL Workbench 之后,我仍然无法与MySQL Workbench(GA 6.3.10)连接,尽管它确实似乎终于在启动MySQL。我收到以下错误提示。

“无法加载身份验证插件'caching_sha2_password':dlopen(/usr/local/mysql/lib/plugin/caching_sha2_password.so,2):找不到映像”

为了解决这个问题,我下载了MySQL Workbench 8.0.11 rc(开发发行版)。在遵循新的密码规则之前,我使用GUI添加了我拥有的用户。我使用更安全的密码更新并重命名了〜/ .my.cnf。然后还原我的数据库。

此时,我能够使用root和在安全安装过程中设置的新密码连接到Workbench。

清理(删除重命名的目录及其内容):

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


1
昨天的原始海报显然已经回答了这一问题。
JakeGould

4
也许它已经是自给自足的了,但是对于那些正在寻找所需确切步骤的人来说,却没有那么重要的细节。
Sturm

重命名/usr/local/var/mysql而不是一开始就将其删除的目的是什么?old.mysql除了清理步骤外,其他任何地方都不会使用。我问,因为在保留数据库的同时重新安装MySQL会很有帮助。
user2763030

我这样做的原因是为了防止以后需要任何数据。我所有的本地数据库都是我们生产环境的克隆,因此我没有备份任何东西,只是在升级过程之后将其全部同步了。我相信您可以使用以前版本的数据库,尽管mysql 8更新了密码的加密规则。我知道您可以在.my.cnf中添加一行以使用旧的auth方法而不是sha2。抱歉,我对此并不了解。我希望这有帮助。
猎人'18

如果Error: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)在运行/usr/local/bin/mysql_secure_installation时遇到问题,则可能需要像我一样简单地启动MySql服务器。您可以通过运行“ mysql.server start”来做到这一点。
Richie Thomas

12

tldr; 通过Homebrew安装了新版本的mysql。恢复到以前安装的版本。

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

完整的故事是您可能使用安装了较新版本的mysql brew upgrade。查看的输出brew info mysql。您可能会看到多个版本。

就我而言,我看到了以下两个方面:

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

我检查mysql --version并运行较新的8.0.11。

Homebrew包含switch允许您在服务之间执行此操作的命令。

使用您自己的版本执行以下替换版本:

brew switch mysql 5.7.17

重启mysql:

brew services restart mysql

所有都应恢复工作状态。


1
最终目的与已经自我回答并被接受的答案有何不同?
JakeGould

4
@JakeGould答案167207 建议您删除所有数据库内容。我的答案建议使用brew switch哪个不。
johnsampson '18

很公平。好建议。+1
JakeGould '18

1
好答案。为我工作
-Kuppuraj

1
不幸的是,在卸载每个版本的mysql之前我都没有找到它。FML
andrewtweber '19

3

我看来问题出在以前的安装中/usr/local/var/mysql

通过homebrew卸载,删除/usr/local/var/mysql,运行brew doctor并通过homebrew重新安装后,问题就消失了。


删除会/usr/local/var/mysql删除您所有的数据库内容吗?
Nicodemuz

@Nicodemuz是的。
日本,

6
您可能应该强调这一点作为警告!
Nicodemuz
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.