在MySQL中,可以使用 UPDATE , SET PASSWORD 和 ALTER USER 语句更改 MySQL 用户密码。

UPDATE

使用 UPDATE 语句更新 mysql 数据库中的 user 表。

执行完 UPDATE 语句后,还需要执行 FLUSH PRIVILEGES 语句从 mysql 数据库中的 grant 表中重新加载权限。

选择mysql数据库

1
use mysql;

执行 UPDATE 更新 连接host为localhost的用户your-username的密码。

1
2
3
4
UPDATE user
SET password = PASSWORD('your-password')
WHERE user = 'your-username' AND
      host = 'localhost';

刷新权限

1
FLUSH PRIVILEGES;

从 MySQL 5.7.6 开始,用户表(user) 使用列 authentication_string 来存储密码。并且,它删除了 password 列。 因此,在 MySQL 5.7.6+,须修改 UPDATE 语句中的 authentication_string 列:

1
2
3
4
UPDATE user
SET authentication_string = PASSWORD('your-password')
WHERE user = 'your-username' AND
      host = 'localhost';

SET PASSWORD

可以使用 user@host 格式的用户帐户来更新密码。

1
SET PASSWORD FOR 'your-username'@'localhost' = PASSWORD('your-password');

从 5.7.6 版开始,不需要在 SET PASSWORD 语句中使用 PASSWORD(),而是直接使用明文密码。

1
SET PASSWORD FOR 'your-username'@'localhost' = 'your-password';

刷新权限

1
FLUSH PRIVILEGES;

ALTER USER

使用 ALTER USER 带有 IDENTIFIED BY 子句的语句。

1
ALTER USER your-username@localhost IDENTIFIED BY 'your-password';

刷新权限

1
FLUSH PRIVILEGES;

想重置 MySQL root 帐户的密码,则需要在不使用授权表验证的情况下强制 MySQL 数据库服务器停止并重新启动。

参考