MySQL修改root密码,多种方法汇总
时间:2026-10-8 07:44 作者:emer 分类: 无
前言
知道旧密码,想改个新密码,有好几种方法。本文汇总常用的改密码方法。
方法一:ALTER USER(推荐)
登录MySQL后:
ALTER USER 'root'@'localhost' IDENTIFIED BY '你的新密码';
然后刷新:
FLUSH PRIVILEGES;
优点: 官方推荐,语法标准,MySQL 5.7/8.0都支持。
方法二:SET PASSWORD
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('你的新密码');
刷新:
FLUSH PRIVILEGES;
注意: MySQL 8.0以后 PASSWORD() 函数被删了,不能用了。
方法三:UPDATE直接改
UPDATE mysql.user SET authentication_string=PASSWORD('你的新密码')
WHERE User='root' AND Host='localhost';
刷新:
FLUSH PRIVILEGES;
注意: 同样,MySQL 8.0不能用PASSWORD()函数。
方法四:命令行修改
不用登录MySQL,直接命令行:
mysqladmin -u root -p password "你的新密码"
输入旧密码后,就改成新密码了。
MySQL 8.0改密码
MySQL 8.0改密码语法有变化:
方法一:ALTER USER(推荐)
ALTER USER 'root'@'localhost' IDENTIFIED BY '你的新密码';
方法二:SET PASSWORD
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的新密码';
不同Host的root用户
root可能有多个:
SELECT user, host FROM mysql.user WHERE user='root';
输出可能是:
| user | host |
|---|---|
| root | localhost |
| root | 127.0.0.1 |
| root | % |
每个host的root密码是独立的,要分别改。
ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';
ALTER USER 'root'@'127.0.0.1' IDENTIFIED BY '新密码';
ALTER USER 'root'@'%' IDENTIFIED BY '新密码';
常见坑
坑1:改了密码还是旧密码能登
原因: 没执行 FLUSH PRIVILEGES;
解决: 改完密码一定要刷新权限。
坑2:MySQL 8.0报语法错误
ERROR 1064 (42000): You have an error in your SQL syntax
原因: 用了 PASSWORD() 函数,MySQL 8.0删了。
解决: 用 ALTER USER 语句。
坑3:改了密码远程登不上
本地能登,远程连不上。
原因: 只改了localhost的密码,远程用户的密码没改。
解决: 把所有host的root密码都改了。
坑4:密码太简单报错
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
原因: MySQL密码强度校验太严。
解决: 用复杂点的密码(大小写+数字+特殊字符),或者关掉密码校验:
SET GLOBAL validate_password_policy=LOW;
坑5:改完密码phpStudy/phpMyAdmin连不上
原因: 站点配置文件里的密码还是旧的。
解决: 改项目配置文件里的数据库密码。
总结
知道旧密码改密码:
| 方法 | 适用版本 | 推荐度 |
|---|---|---|
ALTER USER |
5.7/8.0 | 推荐 |
SET PASSWORD |
5.7及以前 | 一般 |
UPDATE mysql.user |
5.7及以前 | 不推荐 |
mysqladmin |
所有版本 | 一般 |
记住: 改完密码一定要 FLUSH PRIVILEGES;
遇到问题加QQ23979811 协助处理
标签: MySQL root密码 修改密码 ALTER USER 数据库安全