mysql修改用户密码有四种常用方法:1. ALTER USER(推荐,5.7.6+);2. SET PASSword(兼容旧版,8.0不推荐);3. 忘记root密码时跳过权限表重置;4. mysqladmin命令行工具修改(需原密码或免密配置)。

MySQL 修改用户密码有多种方式,具体取决于 MySQL 版本(5.7、8.0+)、当前登录权限以及是否记得原密码。以下是最常用且安全的几种方法,覆盖不同场景。
使用 ALTER USER 修改(推荐,MySQL 5.7.6+)
这是官方推荐的方式,语法清晰、支持密码策略校验,适用于已登录且有 CREATE USER 或 UPDATE 权限的账户(如 root)。
- 修改当前登录用户的密码:
ALTER USER USER() IDENTIFIED BY ‘新密码’; - 修改指定用户(需用户名和主机名匹配):
ALTER USER ‘username’@’localhost’ IDENTIFIED BY ‘新密码’; - 若需同时设置密码过期或锁定状态,可追加:
PASSWORD EXPIRE NEVER ACCOUNT UNLOCK;
使用 SET PASSWORD 修改(兼容旧版本)
适用于 MySQL 5.7 及更早版本,8.0 中仍可用但已不推荐。注意:MySQL 8.0.12+ 已弃用 PASSWORD() 函数,直接写明文密码即可。
- 修改当前用户:
SET PASSWORD = ‘新密码’; - 修改其他用户(需 SUPER 权限):
SET PASSWORD for ‘username’@’localhost’ = ‘新密码’;
忘记 root 密码时的重置流程(linux/windows)
当无法登录且无其他高权限账户时,需跳过权限验证启动 MySQL,再更新密码表。
- 停止 MySQL 服务:
sudo systemctl stop mysqld(centos/RHEL)或 sudo service mysql stop(ubuntu/debian) - 以跳过授权表方式启动:
sudo mysqld_safe –skip-grant-tables –skip-networking & - 另开终端登录(无需密码):
mysql -u root - 执行更新(MySQL 5.7):
UPDATE mysql.user SET authentication_string=PASSWORD(‘新密码’) WHERE User=’root’;
MySQL 8.0+ 改为:
ALTER USER ‘root’@’localhost’ IDENTIFIED BY ‘新密码’; - 刷新权限并重启服务:
FLUSH PRIVILEGES;,然后正常启动 MySQL
通过 mysqladmin 命令行工具修改(适合脚本或运维)
无需进入 MySQL 客户端,适合自动化场景,但要求知道原密码(除非是 root 且配置了 .my.cnf)。
- 修改本地 root 密码(已知原密码):
mysqladmin -u root -p password “新密码”(执行后会提示输入原密码) - 若已配置免密登录(如 ~/.my.cnf),可省略 -p:
mysqladmin -u root password “新密码”