MySQL 8.0.26密码重置失败:执行命令后触发InnoDB相关错误求助
MySQL 8.0.26密码重置失败(InnoDB升级报错)解决方案
你的核心问题是当前使用的是MySQL 8.0.32的服务端程序,但数据目录是从8.0.26版本遗留的,且InnoDB redo log因异常关闭(innodb_fast_shutdown=2)处于非空状态,导致无法自动完成版本升级,进而阻碍了密码重置流程。
步骤1:彻底停止MySQL服务
打开管理员模式命令提示符,执行:
net stop MySQL80
注:如果你的MySQL服务名称不是
MySQL80,替换为实际名称(可通过services.msc查看)
步骤2:备份数据目录(关键)
找到你的MySQL数据目录(默认路径:C:\ProgramData\MySQL\MySQL Server 8.0\Data),复制整个目录到安全位置,防止操作失误丢失数据。
步骤3:解决InnoDB版本升级报错
方法一:用旧版本(8.0.26)完成正常关闭(推荐,数据风险低)
- 若保留了MySQL 8.0.26的安装包,重新安装到临时目录,或找到8.0.26版本的
mysqld.exe文件; - 用8.0.26的
mysqld启动服务(指定你的配置和数据目录):C:\path-to-8.0.26-bin\mysqld.exe --defaults-file="C:\ProgramData\MySQL\MySQL Server 8.0\my.ini" --console - 待服务启动完成后,执行正常关闭:
- 若记得旧密码,打开另一个管理员命令提示符,进入8.0.26的bin目录,执行:
mysqladmin -u root -p shutdown - 若忘记旧密码,重新启动8.0.26的
mysqld并跳过权限验证:
然后打开新的命令提示符,进入8.0.26的bin目录,执行:C:\path-to-8.0.26-bin\mysqld.exe --defaults-file="C:\ProgramData\MySQL\MySQL Server 8.0\my.ini" --skip-grant-tables --consolemysql -u root FLUSH PRIVILEGES; SHUTDOWN;
- 若记得旧密码,打开另一个管理员命令提示符,进入8.0.26的bin目录,执行:
- 关闭后,再尝试用8.0.32的
mysqld启动,此时InnoDB会自动完成版本升级。
方法二:手动删除redo log(谨慎操作,可能丢失未提交数据)
- 确认MySQL服务已完全停止;
- 进入数据目录,删除
ib_logfile0和ib_logfile1两个文件; - 用8.0.32的
mysqld启动服务,InnoDB会自动重建redo log并完成版本升级。
步骤4:执行密码重置
- 创建
mysql-init.txt文件(放在C盘根目录),内容为:ALTER USER 'root'@'localhost' IDENTIFIED BY '你的新密码'; - 打开管理员命令提示符,进入8.0.32的bin目录,执行:
mysqld --defaults-file="C:\ProgramData\MySQL\MySQL Server 8.0\my.ini" --init-file="C:\mysql-init.txt" --console - 待服务启动完成并执行完初始化命令后,关闭服务,再正常启动MySQL服务,即可使用新密码登录。
内容的提问来源于stack exchange,提问作者TMX
相关产品推荐
相关产品推荐

