MySQL数据库的用户密码修改是日常运维中的高频操作,不同版本MySQL支持的命令略有不同,掌握正确的修改方式能避免很多权限问题。下文将详细介绍几种常用的修改方法,以及操作时的注意事项。

修改前的前置准备
执行密码修改操作前,需要确认当前登录的账户拥有足够的权限,通常root账户或者拥有CREATE USER权限的账户可以修改其他用户的密码,普通用户只能修改自己的密码。同时建议提前备份相关的用户权限信息,避免操作失误导致无法登录。
常用修改命令详解
1. 使用ALTER USER命令(MySQL 5.7.6及以上版本推荐)
这是官方推荐的修改方式,语法规范且兼容性好,支持同时设置密码过期策略等属性。
-- 修改当前登录用户的密码 ALTER USER USER() IDENTIFIED BY 'new_password_123'; -- 修改指定用户的密码,比如修改test_user的密码 ALTER USER 'test_user'@'localhost' IDENTIFIED BY 'new_password_456'; -- 修改密码同时设置密码90天后过期 ALTER USER 'test_user'@'localhost' IDENTIFIED BY 'new_password_789' PASSWORD EXPIRE INTERVAL 90 DAY;
2. 使用SET PASSWORD命令
这种方式兼容更早的MySQL版本,语法简洁,适合快速修改密码。
-- 修改当前用户密码 SET PASSWORD = 'new_password_123'; -- 修改指定用户密码,需要指定用户和host SET PASSWORD FOR 'test_user'@'localhost' = 'new_password_456';
3. 直接修改mysql.user表(不推荐,仅兼容老版本)
这种方式直接操作系统用户表,在MySQL 5.7之前可以使用,新版本中密码字段存储方式变化,不建议使用,容易出现字段不匹配的问题。
-- 老版本MySQL修改密码,新版本执行会报错
UPDATE mysql.user SET authentication_string = PASSWORD('new_password_123') WHERE User = 'test_user' AND Host = 'localhost';
-- 修改后必须刷新权限才能生效
FLUSH PRIVILEGES;不同场景的操作示例
如果是忘记了root密码需要重置,需要先停止MySQL服务,以跳过权限验证的方式启动,再执行修改操作:
-- 跳过权限表启动后,先清空root密码 UPDATE mysql.user SET authentication_string = '' WHERE User = 'root' AND Host = 'localhost'; FLUSH PRIVILEGES; -- 重启MySQL服务后,用空密码登录,再设置新密码 ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_root_password_123';
注意事项
- 密码设置需要符合MySQL的密码策略要求,如果提示密码强度不够,可以调整
validate_password相关参数,或者设置更复杂的密码。 - 修改其他用户密码时,必须准确指定用户的host部分,比如
'test_user'@'localhost'和'test_user'@'%'是两个不同的用户,修改时不能混淆。 - 使用直接修改user表的方式后,一定要执行
FLUSH PRIVILEGES;刷新权限,否则修改不会生效。 - 生产环境修改密码前,建议先在测试环境验证命令,避免影响线上业务。
验证修改结果
修改完成后,可以退出当前登录,用新密码尝试登录验证是否修改成功:
-- 终端执行登录命令,输入新密码测试 mysql -u test_user -p
如果能正常登录,说明密码修改成功。如果出现访问拒绝的错误,需要检查用户名、host、密码是否输入正确,或者重新执行修改命令。
MySQL用户密码修改ALTER_USERSET_PASSWORDUPDATE_mysql_user修改时间:2026-06-04 02:09:39