🔐 我是如何在 Windows 上找回 MySQL Root 密码(MySQL 8.0)——一步一步
Source: Dev.to

概览
忘记 MySQL root 密码的感觉就像世界末日——尤其是当你还是学生或新人,MySQL 竟然拒绝连接时。我最近就在 Windows + MySQL 8.0 上遇到了同样的问题,花了好几个小时只得到类似的错误:
ERROR 2003 (HY000): Can't connect to MySQL server on 'localhost:3306'
经过大量的尝试与错误,我最终在不丢失任何数据的情况下解决了它。下面就是对我 100 % 有效的方法。
问题概述
- 操作系统: Windows 10/11
- MySQL 版本: 8.0.x
- 问题: 忘记 MySQL root 密码,MySQL 服务不允许登录。
- 尝试过的办法:
--skip-grant-tables方法一直失败。
实际有效的解决方案(Init File 方法)
此方法安全、官方,即使其他方法失效也能奏效。
步骤 1:停止 MySQL 服务
- 按 Win + R,输入
services.msc并回车。 - 找到 MySQL80(或你安装时的服务名称)。
- 右键 → 停止。
步骤 2:创建密码重置文件
- 打开 记事本。
- 粘贴以下 SQL:
ALTER USER 'root'@'localhost'
IDENTIFIED WITH mysql_native_password
BY 'TempPass@123';
- 将文件另存为
reset.sql(确保扩展名是.sql,而不是.txt),保存路径为:
C:\Users\<your‑username>\Documents\
步骤 3:使用 Init File 启动 MySQL
以管理员身份打开 命令提示符,运行:
cd "C:\Program Files\MySQL\MySQL Server 8.0\bin"
然后使用 init 文件启动 MySQL:
mysqld --init-file="C:\Users\<your‑username>\Documents\reset.sql" --datadir="C:\ProgramData\MySQL\MySQL Server 8.0\Data"
预期结果
- 终端会出现“卡住”的状态(没有提示符)。
- 没有错误信息显示。
- MySQL 服务器正在运行,说明密码重置命令已成功执行。
步骤 4:停止临时服务器
在终端中按 Ctrl + C 结束进程,然后关闭窗口。
步骤 5:正常启动 MySQL
- 再次打开
services.msc。 - 启动 MySQL80。
步骤 6:使用新密码登录
mysql -u root -p
输入 reset.sql 中设置的密码(TempPass@123),你应该会看到:
Welcome to the MySQL monitor
步骤 7(重要):设置自己的安全密码
在 MySQL 监视器中执行:
ALTER USER 'root'@'localhost'
IDENTIFIED WITH mysql_native_password
BY 'YourOwnStrongPassword@123';
FLUSH PRIVILEGES;
清理(可选但推荐)
删除之前创建的重置文件:
del "C:\Users\<your‑username>\Documents\reset.sql"
我常犯的错误(供你避免)
- 在 MySQL 服务器未运行时尝试连接。
- 使用了错误的
datadir。 - 忘记调整 Windows 文件权限。
- 误以为“卡住”的终端表示出错(实际上表示成功)。
最后感想
- 如果你在 Windows 上卡住了 MySQL root 访问权限:不要慌、不要重新安装 MySQL、也不要删除数据。
- Init‑file 方法是我找到的最可靠的修复手段。
如果这篇文章对你有帮助,欢迎分享——它可能会为别人节省数小时的痛苦。