You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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)完成正常关闭(推荐,数据风险低)

  1. 若保留了MySQL 8.0.26的安装包,重新安装到临时目录,或找到8.0.26版本的mysqld.exe文件;
  2. 用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
    
  3. 待服务启动完成后,执行正常关闭:
    • 若记得旧密码,打开另一个管理员命令提示符,进入8.0.26的bin目录,执行:
      mysqladmin -u root -p shutdown
      
    • 若忘记旧密码,重新启动8.0.26的mysqld并跳过权限验证:
      C:\path-to-8.0.26-bin\mysqld.exe --defaults-file="C:\ProgramData\MySQL\MySQL Server 8.0\my.ini" --skip-grant-tables --console
      
      然后打开新的命令提示符,进入8.0.26的bin目录,执行:
      mysql -u root
      FLUSH PRIVILEGES;
      SHUTDOWN;
      
  4. 关闭后,再尝试用8.0.32的mysqld启动,此时InnoDB会自动完成版本升级。

方法二:手动删除redo log(谨慎操作,可能丢失未提交数据)

  1. 确认MySQL服务已完全停止;
  2. 进入数据目录,删除ib_logfile0和ib_logfile1两个文件;
  3. 用8.0.32的mysqld启动服务,InnoDB会自动重建redo log并完成版本升级。

步骤4:执行密码重置

  1. 创建mysql-init.txt文件(放在C盘根目录),内容为:
    ALTER USER 'root'@'localhost' IDENTIFIED BY '你的新密码';
    
  2. 打开管理员命令提示符,进入8.0.32的bin目录,执行:
    mysqld --defaults-file="C:\ProgramData\MySQL\MySQL Server 8.0\my.ini" --init-file="C:\mysql-init.txt" --console
    
  3. 待服务启动完成并执行完初始化命令后,关闭服务,再正常启动MySQL服务,即可使用新密码登录。

内容的提问来源于stack exchange,提问作者TMX

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 13:07:05