1. 以管理员身份打开命令提示符
-
在开始菜单搜索
cmd,右键选择 "以管理员身份运行"。跳过授权表的 MySQL
进入
bin目录,再次执行:cmdcd /d D:\pilot\mariadb_10.11.3_winx64\bin mysqld --defaults-file="D:\pilot\mariadb_10.11.3_winx64\my.ini" --skip-grant-tables
此时窗口会停留在等待连接的状态。
2. 连接数据库并修改密码
打开另一个管理员 cmd 窗口,进入 bin 目录:
cmd
cd /d D:\pilot\mariadb_10.11.3_winx64\bin
mysql -u root
3. 刷新权限表(必须执行)
sql
FLUSH PRIVILEGES;
这会将权限表加载到内存,使 ALTER USER 命令可用。
4. 重置 'root'@'127.0.0.1' 的密码
sql
ALTER USER 'root'@'127.0.0.1' IDENTIFIED BY '你的新密码';
将 '你的新密码' 替换为实际密码,例如 'root123'。
5. 验证修改(可选)
sql
SELECT user, host, authentication_string FROM mysql.user WHERE user='root' AND host='127.0.0.1';
如果看到 authentication_string 有值(非空),说明密码已更新。
6. 退出并停止跳过授权表模式
sql
EXIT;
7. 正常重启服务(恢复服务参数)
-
停止服务:
cmdnet stop PiEMS_MySql -
恢复原始启动参数(如果之前修改了服务配置):
cmdsc config PiEMS_MySql binPath= "\"D:\pilot\mariadb_10.11.3_winx64\bin\mysqld.exe\" \"--defaults-file=D:\pilot\mariadb_10.11.3_winx64\my.ini\" \"PiEMS_MySql\"" -
启动服务:
cmdnet start PiEMS_MySql
8. 测试登录
cmd
"D:\pilot\mariadb_10.11.3_winx64\bin\mysql.exe" -h 127.0.0.1 -u root -p
输入新密码,成功进入即表示密码重置完成。
备选方法(如果 ALTER USER 报错)
若 ALTER USER 因版本或模式问题无法执行,可改用直接更新 global_priv 表:
sql
USE mysql;
FLUSH PRIVILEGES;
UPDATE global_priv SET priv = JSON_SET(priv, '$.password', PASSWORD('你的新密码')) WHERE user='root' AND host='127.0.0.1';
FLUSH PRIVILEGES;
注意事项
- 如果
'root'@'%'或'root'@'localhost'也需要重置密码,可类似地执行ALTER USER命令,只需修改host部分即可。 - 若想统一所有 root 账户的密码,可分别对
localhost、127.0.0.1、%执行相同的ALTER USER语句。