MySQL修改root密码,多种方法汇总

前言

知道旧密码,想改个新密码,有好几种方法。本文汇总常用的改密码方法。

方法一: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 协助处理


emer 发布于  2026-10-8 07:44