能重置,但不能点几下控制面板就搞定;xampp的resetroot.bat在mysql 8.0+中已失效,必须手动终止mysqld.exe进程、以--skip-grant-tables模式启动、用alter user配合对应认证插件修改密码,并执行flush privileges后重启服务。

能重置,但不能点几下控制面板就搞定。XAMPP 自带的 resetroot.bat 在 MySQL 8.0+ 中已失效,直接双击没用;必须手动绕过权限验证,再用 SQL 更新密码。
关闭 MySQL 并确认 mysqld.exe 进程已退出
这是最容易卡住的一步。XAMPP 控制面板里点了 Stop,不代表进程真死了——残留的 mysqld.exe 会占着 3306 端口,导致后续安全模式启动失败。
操作建议:
- 先在 XAMPP 控制面板点击 MySQL 的 Stop
- 按
Ctrl + Shift + Esc打开任务管理器 → 切换到「详细信息」页 - 查找所有
mysqld.exe,右键「结束任务」(不止一个也全杀掉) - 可补一句命令验证:
netstat -ano | findstr :3306,若无输出才说明端口空闲
以 --skip-grant-tables 模式手动启动 mysqld
Windows 下不能靠改 my.ini 加 skip-grant-tables 来生效——MySQL 8.0+ 会拒绝加载配置后还跳过权限校验,必须从命令行强制启动。
操作建议:
- 用管理员身份打开 CMD,进入 XAMPP 的 MySQL bin 目录,例如:
C:\xampp\mysql\bin - 执行:
mysqld --skip-grant-tables --bind-address=127.0.0.1 --port=3306 --console - 这个窗口必须保持打开(它就是当前运行的 MySQL 实例),别关,也别最小化到托盘——关了就断服务
-
--console很关键,能看到报错;--bind-address防止本地 socket 被绕过,提升安全性
无密码登录并执行 ALTER USER 更新密码
MySQL 8.0+ 默认认证插件是 caching_sha2_password,用旧版 UPDATE user SET password=... 会报错或无效,必须用 ALTER USER 语法,并明确指定插件。
操作建议:
- 新开一个 CMD 窗口,执行:
mysql -u root(不加-p,也不加-h) - 登录后立即查当前 root 认证方式:
SELECT User, Host, plugin FROM mysql.user WHERE User = 'root'; - 根据
plugin值选对应语句:- 如果是
caching_sha2_password(MySQL 8.0 默认):ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY '你的新密码'; - 如果是
mysql_native_password:ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的新密码';
- 如果是
- 执行:
FLUSH PRIVILEGES;(跳过权限模式下这步看似多余,但重启后权限表加载依赖它)
关闭安全模式并用新密码验证
很多人输完密码进不去,不是密码错了,而是忘了关掉上一步那个 mysqld --skip-grant-tables 窗口——它占着端口,XAMPP 控制面板根本起不来自己的实例。
操作建议:
- 回到第一个 CMD 窗口,按
Ctrl + C终止mysqld进程 - 回到 XAMPP 控制面板,点击 MySQL 的 Start
- 验证:
mysql -u root -p,输入新设密码,应能进入mysql>提示符 - 若仍报
ERROR 1045 (28000),重点检查:FLUSH PRIVILEGES是否漏执行、Host是'localhost'还是'127.0.0.1'(二者在 MySQL 中不等价)
整个过程里最易被忽略的是:进程是否彻底清理干净、plugin 类型是否匹配、以及安全模式窗口是否手动终止。三者任一出错,都会让新密码“设了等于没设”。











