忘记 MySQL 密码这事儿太常见了,几乎每个用过 MySQL 的人迟早都会碰上一次。先别急,问题不大——只要你能摸到本机的 Windows 桌面,通过跳过权限验证这一招,几分钟就能把密码改回来。

1、停止 MySQL 服务
按下 Win + R,输入 cmd,然后右键选择“以管理员身份运行”——这一步千万别省,权限不够后面操作会吃瘪。在命令行里敲下这条命令,把正在运行的 MySQL 服务停下来:
net stop MySQL80
2、以“跳过权限”模式启动
还是在管理员命令提示符窗口,先切换到 MySQL 的 bin 目录。路径根据你安装的版本调整,下面以 MySQL 8.0 的默认路径为例:
cd "C:Program FilesMySQLMySQL Server 8.0bin"
然后执行这条命令,让 MySQL 以“不检查权限”的方式启动——说白了就是肉身翻跟斗,绕开密码验证:
mysqld --console --skip-grant-tables --shared-memory
执行后这个命令行窗口会一直卡住,别慌,它是正常在运行的。留着别关,下一步要用另一个窗口操作。
3、免密登录并重置密码
重新打开一个“管理员身份运行”的命令提示符窗口(同样要管理员权限)。再次切到 bin 目录:
cd "C:Program FilesMySQLMySQL Server 8.0bin"
现在直接登录,密码空着,回车:
mysql -u root
成功了的话,你就直接进到了 MySQL 命令行。接下来,根据你装的 MySQL 版本选下面的方法操作。注意每条 SQL 语句末尾必须带分号。
| 适用版本 | 操作步骤与命令 |
|---|---|
| MySQL 8.0+ (主流版本) |
1. 先刷新权限(这步必须最先做):FLUSH PRIVILEGES;2. 修改密码(把 NewPassword123! 换成你自己的新密码):ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewPassword123!';
|
| MySQL 5.7 (旧版本) |
1. 直接更新密码字段:UPDATE mysql.user SET authentication_string=PASSWORD('NewPassword123!') WHERE User='root';2. 刷新权限: FLUSH PRIVILEGES;
|
4、恢复正常服务
密码改好后,在 MySQL 命令行输入 exit 退出。然后回到刚才第二步那个一直卡着的窗口,按下 Ctrl + C 强制结束进程,或者直接关掉那个窗口也行。
再打开一个管理员命令提示符,把 MySQL 服务重新启动起来:
net start MySQL80
好了,现在用新密码测试登录:
mysql -u root -p
输入密码,顺利进入,大功告成。
总结
整个过程就四步:停服务 → 跳过权限启动 → 免密登录改密码 → 重启服务。原理很简单,利用 --skip-grant-tables 参数临时跳过权限验证,改完后再恢复正常模式。注意版本差异,MySQL 8.0 以后必须用 ALTER USER 语法,5.7 及以前用 UPDATE 改密码字段。别搞混了就行。
