运维栈

  • 首页
  • 网络和安全
    • 网络
    • 安全
  • 操作系统
    • Linux
  • 中间件
    • Nginx
  • 数据库
    • MySQL
    • PostgreSQL
    • KingBase
    • Doris
  • 云计算
    • kvm
    • 容器
    • K8S
  • 编程
    • Golang
    • Python
  • 运维
    • zabbix
    • prometheus
  • 人工智能
运维栈
一个专注于分享运维技术的小站
  1. 首页
  2. 数据库
  3. MySQL
  4. 正文

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

2026年1月27日 323点热度 1人点赞 0条评论
文章目录
  • 一、故障现象
  • 二、排查处理过程
    • 第一步:尝试修改用户密码
    • 第二步:通过日志确认原因
    • 第三步:尝试使用mysql_upgrade手动升级数据结构
    • 第四步:使用upgrade参数强制升级数据库
    • 第五步: 正常启动数据库,尝试登陆

一、故障现象

近期我们公司内部网络安全排查中,发现其中一个业务系统使用的是mysql8.0.11,存在几个高风险漏洞,经评估决定对其升级到最新版本MySQL8.0.44。升级后出现数据库无法远程登录,即使输入正确的密码也提示连接拒绝,报错如下图; MySQL远程登录报错

二、排查处理过程

第一步:尝试修改用户密码

开始我以为是数据库用户的密码错误了,就想着使用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].

系统表不支持'MyISAM'存储引擎

第三步:尝试使用mysql_upgrade手动升级数据结构

使用 mysql_upgrade 命令使用手动升级方式,重新升级数据库表数据。提示已经不支持使用该方式手动升级数据库数据文件。借助翻译工具翻译后的内容可以看到:新版本的MySQL数据库在启动时会自动升级,但是也提供了 --upgrade 参数用于控制升级动作。可以尝试使用该方式强制升级mysql数据库。

mysql_upgrade

提示内容翻译 mysql_upgrade 客户端现已弃用。原先由该升级客户端执行的操作,现在均由服务器自身完成。 要执行升级,请使用新的 MySQL 二进制程序启动旧的数据目录。用户表的修复将自动进行,升级后无需重启。 当使用新版本的 MySQL 二进制程序启动旧数据目录时,升级过程会自动开始。为避免意外触发升级,请在启动 MySQL 二进制程序时使用 --upgrade=NONE 选项。此外,也提供了 --upgrade=FORCE 选项,用于按需强制执行服务器升级流程。 升级过程可能因多种原因而失败。若发生失败,MySQL 服务器在下次启动时将再次尝试执行升级序列。如果服务器反复升级失败,可使用 --upgrade=MINIMAL 选项启动服务器,以跳过升级流程,从而允许用户手动排查并修复问题。

第四步:使用upgrade参数强制升级数据库

根据刚才的提示,可以使用upgrade参数控制数据库的升级行为,查看upgrade参数如何使用,

mysqld --verbose --help | grep -A 10 -B 10 -i "upgrade"

upgrade参数

参数值 含义
NONE 如果自动升级服务器,则中止启动
MINIMAL 启动服务器,但跳过非绝对必要的升级步骤
AUTO(默认) 在需要时自动升级服务器
FORCE 强制执行服务器升级

根据提示内容,FORCE 可以强制服务器启动的时候执行升级操作。

 mysqld --user=mysql --datadir=/..../mysql/ --upgrade=FORCE

image.png

查看MySQL的运行日志可以看出,在数据库启动过程中执行了升级操作,而且完成了升级,也没有出现之前 Storage engine 'MyISAM' does not support system tables 的字样。

第五步: 正常启动数据库,尝试登陆

使用常规参数启动数据库服务,查看日志确认没有在出现类似告警,尝试使用mysql命令行工具登录数据库,经过尝试可以正常登录。

systemctl restart  mysqld
mysql -u'user' -p -h192.168.170.195

image.png

逐个启动服务,逐步恢复业务系统,到此为止本次故障处理完毕。

标签: DBA MySQL 数据库
最后更新:2026年5月21日

辰砂

这个人很懒,什么都没留下

点赞
< 上一篇
下一篇 >

文章评论

razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
取消回复
搜索
历史文章
  • 2026 年 6 月 / 1篇
  • 2026 年 5 月 / 3篇
  • 2026 年 1 月 / 1篇
  • 2025 年 7 月 / 1篇
  • 2025 年 5 月 / 2篇
  • 2025 年 4 月 / 2篇

COPYRIGHT © 2025 运维栈. ALL RIGHTS RESERVED.

Theme omfox Made By omfox

蜀ICP备2023010359号

川公网安备51010702042743号