在MySQL日常使用中,修改用户密码是常见运维操作。无论你是想更改root密码,还是给业务账号换一个更安全的密码,都需要使用正确的命令和步骤,否则可能导致无法登录甚至权限混乱。

一、使用ALTER USER修改密码
从MySQL 5.7.6和MariaDB 10.1.2开始,官方推荐使用ALTER USER语句来修改密码,这种方式最规范也最安全。
1. 修改当前登录用户密码
-- 修改当前登录用户的密码 ALTER USER USER() IDENTIFIED BY 'new_password';
2. 修改指定用户密码
如果需要修改其他用户(例如root或某个应用账号),可以用下面的命令:
-- 将用户名为testuser, host为localhost的密码改为新密码 ALTER USER 'testuser'@'localhost' IDENTIFIED BY 'new_password';
二、通过UPDATE mysql.user表修改
在老版本MySQL中,有时会直接更新mysql.user系统表。注意该方式在MySQL 5.7之后不推荐,且必须使用PASSWORD函数(老版本)或authentication_string字段。
-- 适用于MySQL 5.6及之前版本
UPDATE mysql.user SET PASSWORD = PASSWORD('new_password')
WHERE User = 'testuser' AND Host = 'localhost';
FLUSH PRIVILEGES;
在MySQL 5.7及以上,密码字段为authentication_string,但更建议用ALTER USER。
三、忘记root密码如何重置
如果忘记了root密码,可以通过安全模式跳过权限表来重置:
- 停止MySQL服务
- 使用命令启动:mysqld_safe --skip-grant-tables &
- 免密码登录后执行修改
-- 跳过权限表后登录,执行:
UPDATE mysql.user SET authentication_string = PASSWORD('new_root_pwd')
WHERE User = 'root' AND Host = 'localhost';
FLUSH PRIVILEGES;
EXIT;
重启MySQL服务即可用新密码登录。
四、修改密码常见注意事项
| 场景 | 推荐方式 |
|---|---|
| 正常修改用户密码 | ALTER USER语句 |
| 老版本MySQL | UPDATE user表并FLUSH |
| 忘记root密码 | 安全模式跳过权限表 |
修改完成后,建议用新密码重新连接,确认没有问题。同时密码应尽量复杂,避免被暴力破解。
提示:生产环境修改密码前,请确认应用配置中的账号信息同步更新,防止服务连不上数据库。