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

nip*_*ese 21 mysql homebrew innodb

我正在尝试从 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
Run Code Online (Sandbox Code Playgroud)

小智 21

我的日志中有完全相同的错误。只是为了建立日本人的回答。

删除所有版本的 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): image not found”

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

在这一点上,我能够使用 root 和我在安全安装期间设置的新密码连接到工作台。

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

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

  • 也许它已经是自我回答了,但对于我们这些正在寻找所需的确切步骤的人来说,没有如此重要的细节。 (4认同)

joh*_*son 12

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

brew switch mysql X.X.XX` and `brew services restart mysql 
Run Code Online (Sandbox Code Playgroud)

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

就我而言,我看到了以下两种情况:

/usr/local/Cellar/mysql/5.7.17
/usr/local/Cellar/mysql/8.0.11
Run Code Online (Sandbox Code Playgroud)

我检查了一下mysql --version,较新的 8.0.11 正在运行。

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

执行此替换您自己的版本:

brew switch mysql 5.7.17
Run Code Online (Sandbox Code Playgroud)

重启mysql:

brew services restart mysql
Run Code Online (Sandbox Code Playgroud)

一切都应该恢复正常工作。

  • @JakeGould 回答 [167207](https://superuser.com/a/1332979/167207) 建议您删除所有数据库内容。我的回答建议使用“brew switch”,但不建议使用。 (4认同)