MySQL升级8.0.44后登录报错-系统表不支持‘MyISAM‘存储引擎

张开发
2026/4/2 15:59:36 15 分钟阅读
MySQL升级8.0.44后登录报错-系统表不支持‘MyISAM‘存储引擎
一、故障现象近期我们公司内部网络安全排查中发现其中一个业务系统使用的是mysql8.0.11存在几个高风险漏洞经评估决定对其升级到最新版本MySQL8.0.44。升级后出现数据库无法远程登录即使输入正确的密码也提示连接拒绝报错如下图二、排查处理过程第一步尝试修改用户密码开始我以为是数据库用户的密码错误了就想着使用root用户进去修改下用户密码。执行修改用户密码的sql结果发现执行sql报错提示系统表不支持MyISAM存储引擎提示如下图第二步通过日志确认原因通过查看 MySQL 数据库运行日志发现数据库在启动时就已经发出警告[Warning] [MY-010929] [Server] Storage engine MyISAM does not support system tables. [mysql.user]. [Warning] [MY-010929] [Server] Storage engine MyISAM does not support system tables. [mysql.db].第三步尝试使用mysql_upgrade手动升级数据结构使用 mysql_upgrade 命令使用手动升级方式重新升级数据库表数据。提示已经不支持使用该方式手动升级数据库数据文件。借助翻译工具翻译后的内容可以看到新版本的MySQL数据库在启动时会自动升级但是也提供了--upgrade参数用于控制升级动作。可以尝试使用该方式强制升级mysql数据库。提示内容翻译mysql_upgrade客户端现已弃用。原先由该升级客户端执行的操作现在均由服务器自身完成。要执行升级请使用新的 MySQL 二进制程序启动旧的数据目录。用户表的修复将自动进行升级后无需重启。当使用新版本的 MySQL 二进制程序启动旧数据目录时升级过程会自动开始。为避免意外触发升级请在启动 MySQL 二进制程序时使用--upgradeNONE选项。此外也提供了--upgradeFORCE选项用于按需强制执行服务器升级流程。升级过程可能因多种原因而失败。若发生失败MySQL 服务器在下次启动时将再次尝试执行升级序列。如果服务器反复升级失败可使用--upgradeMINIMAL选项启动服务器以跳过升级流程从而允许用户手动排查并修复问题。第四步使用upgrade参数强制升级数据库根据刚才的提示可以使用upgrade参数控制数据库的升级行为查看upgrade参数如何使用mysqld --verbose --help | grep -A 10 -B 10 -i upgrade参数值含义NONE如果自动升级服务器则中止启动MINIMAL启动服务器但跳过非绝对必要的升级步骤AUTO默认在需要时自动升级服务器FORCE强制执行服务器升级根据提示内容FORCE可以强制服务器启动的时候执行升级操作。mysqld --usermysql --datadir/..../mysql/ --upgradeFORCE查看MySQL的运行日志可以看出在数据库启动过程中执行了升级操作而且完成了升级也没有出现之前Storage engine MyISAM does not support system tables的字样。第五步 正常启动数据库尝试登陆使用常规参数启动数据库服务查看日志确认没有在出现类似告警尝试使用mysql命令行工具登录数据库经过尝试可以正常登录。systemctl restart mysqld mysql -uuser -p -h192.168.170.195

更多文章