MySQL 5.7 → 8.0 迁移时,直接恢复了包含系统表的备份,导致系统表引擎混乱,无法创建用户、无法授权、无法修改认证方式

第一步:以跳过权限模式启动 MySQL

systemctl stop mysqld
mysqld_safe --skip-grant-tables --skip-networking &

第二步:登录 MySQL 并修复系统表

mysql -uroot

在 MySQL 命令行中执行:

USE mysql;
ALTER TABLE db ENGINE=InnoDB;
ALTER TABLE user ENGINE=InnoDB;
FLUSH PRIVILEGES;
EXIT;

第三步:杀死后台进程,正常重启 MySQL

pkill mysqld
systemctl start mysqld

第四步:验证系统表引擎

mysql -uroot -p'你的密码' -e "USE mysql; SHOW TABLE STATUS LIKE 'db';"

如果 Engine 列显示 InnoDB,说明修复成功。

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐