更新mysql用户密码首选ALTER USER命令,如ALTER USER ‘john’@’localhost’ IDENTIFIED BY ‘NewPass123!’; MySQL 8.0中SET PASSword = ‘新密码’; 直接更新mysql.user表需谨慎并执行FLUSH PRIVILEGES; 忘记root密码时可跳过权限验证重置,操作后务必重启服务并测试登录。

更新MySQL用户密码是数据库管理中的常见操作,尤其在安全策略要求定期更换密码时。不同版本的MySQL语法略有差异,操作方式也有所不同。以下是详细的更新步骤,适用于MySQL 5.7及以上版本(包括MySQL 8.0)。
使用ALTER USER命令更新密码
这是MySQL 5.7及以上推荐的方式,语法清晰且支持密码过期策略。
- 登录MySQL:使用具有权限的账户(如root)登录数据库
- 执行命令:ALTER USER ‘用户名’@’主机’ IDENTIFIED BY ‘新密码’;
- 例如:ALTER USER ‘john’@’localhost’ IDENTIFIED BY ‘NewPass123!’;
- 完成后执行 FLUSH PRIVILEGES; 刷新权限
使用SET PASSWORD命令修改当前用户
适合修改当前登录用户的密码,操作简单安全。
- 以目标用户身份登录MySQL
- 执行命令:SET PASSWORD = PASSWORD(‘新密码’);
- MySQL 8.0中应使用:SET PASSWORD = ‘新密码’;(不再需要PASSWORD()函数)
- 该命令自动应用到当前会话用户
直接更新mysql.user表(不推荐但可用)
适用于旧版本或特殊场景,需谨慎操作。
- 使用root账户登录
- 选择mysql数据库:USE mysql;
- 执行UPDATE语句:
- UPDATE user SET authentication_string = PASSWORD(‘新密码’) WHERE User = ‘用户名’ AND Host = ‘主机’;
- MySQL 8.0+ 使用:UPDATE user SET authentication_string = CONCAT(‘*’, SHA1(UNHEX(SHA1(‘新密码’)))) WHERE User = ‘用户名’ AND Host = ‘主机’;
- 必须执行 FLUSH PRIVILEGES; 生效
忘记root密码时的重置方法
当无法登录时,可通过跳过权限验证重置root密码。
- 停止MySQL服务:sudo systemctl stop mysql
- 启动时跳过权限表:mysqld_safe –skip-grant-tables &
- 登录MySQL:mysql -u root
- 根据版本使用 ALTER USER 或 UPDATE 命令修改密码
- 重启MySQL服务使配置恢复
基本上就这些。日常建议优先使用ALTER USER命令,安全又标准。操作前确认MySQL版本,避免语法错误。修改后建议测试登录,确保密码生效。