mysql_upgrade 和 MySQL 服务 - 恶性循环
Posted
技术标签:
【中文标题】mysql_upgrade 和 MySQL 服务 - 恶性循环【英文标题】:mysql_upgrade and MySQL service - Vicious Circle 【发布时间】:2018-11-04 21:30:05 【问题描述】:我正在 Windows 10 上将 mysql 服务器 5.067 升级到 5.5.60。
我停止了服务,将 bin 替换为共享目录并启动了服务。
服务启动失败并显示消息(在事件查看器中):
Can't open the mysql.plugin table. Please run mysql_upgrade to create it.
For more information, see Help and Support Center at http://www.mysql.com.
好的,所以我使用以下命令以管理员身份打开了 cmd:
mysql_upgrade --port 64202
结果:
Looking for 'mysql.exe' as: C:\Program Files (x86)\XXX\MySQLServer\bin\mysql.exe
Looking for 'mysqlcheck.exe' as: C:\Program Files (x86)\XXX\MySQLServer\bin\mysqlcheck.exe
Error: Failed while fetching Server version! Could be due to unauthorized access.
FATAL ERROR: Upgrade failed
MySQL 升级的设计是通过 TCP 连接到 MySQL 来运行升级,但是如果服务没有运行,它怎么可能工作呢?这是一个恶性循环 - MySQL 服务需要升级才能启动,而 mysql_upgrade 需要连接到正在运行的服务。
怎么了?
【问题讨论】:
【参考方案1】:不支持跳过主要版本 (5.1),它可能有效,也可能无效。适当的升级是以下之一:
计划 A:升级到 5.1,然后升级到 5.5。在每一步运行mysql_upgrade
。
Plan B:使用 mysqldump 从 5.0 转储数据。 (一定要获得例程等)。吹走(或绕过)5.0 并安装新的 5.5。重新加载数据。可能转储文件中存在语法错误,如果需要,请编辑文件。
【讨论】:
【参考方案2】:由于您是从 5.0 升级到 5.5,因此有些配置值已被弃用,导致引擎无法启动。
最有可能的罪魁祸首是skip-dbd
,如this site 所述。
所以:找到你的 MySQL 配置文件,注释掉 skip-dbd
选项并重启 MySQL 服务。然后,您可以使用适当的选项(包括身份验证)运行 mysql_upgrade
。
【讨论】:
以上是关于mysql_upgrade 和 MySQL 服务 - 恶性循环的主要内容,如果未能解决你的问题,请参考以下文章
mysql_upgrade 失败 - innodb 表不存在?
MySQL二进制包使用mysql_upgrade版本更新升级MySQL 5.7
r MySQL server version for the right syntax to use near 'mysql_upgrade -u root -p' at line 1