更改 MySQL 用户密码的三种方法
本文介绍了在 MySQL 中如何使用 UPDATE
, SET PASSWORD
和 ALTER USER
语句更改 MySQL 用户密码。
更改 MySQL 用户帐户的密码是一个常用的操作,但是在更改 MySQL 用户帐户的密码之前 ,您应该考虑以下重要问题:
- 您要更改哪个用户帐户的密码?
- 哪个应用程序正在使用正在更改密码的用户帐户?如果更改密码了而没有更改使用该用户帐户的应用程序的连接字符串,该应用程序将无法连接到数据库服务器。
回答完这些问题之后,您可以开始更改用户帐户的密码。
在 MySQL 中,您可以使用 UPDATE
, SET PASSWORD
和 ALTER USER
语句来更改用户的密码。
使用 UPDATE 语句更改 MySQL 用户密码
第一种修改密码的方法是使用 UPDATE
语句更新 mysql
数据库中的 user
表。
执行完 UPDATE
语句后,还需要执行 FLUSH PRIVILEGES
语句从 mysql
数据库中的 grant
表中重新加载权限。
假设您要更改来自主机 localhost
连接的用户 dbadmin
的密码为 Db123654
,则需要按步骤执行以下语句:
-
选择
mysql
数据库:USE mysql;
-
更新密码:
UPDATE user SET password = PASSWORD('Db123654') WHERE user = 'dbadmin' AND host = 'localhost';
-
刷新权限:
FLUSH PRIVILEGES;
请注意,从 MySQL 5.7.6 开始,用户表使用列 authentication_string
来存储密码。并且,它删除了 password
列。
因此,如果您使用 MySQL 5.7.6+,则必须修改 UPDATE
语句中的 authentication_string
列:
UPDATE user
SET authentication_string = PASSWORD('Db123654')
WHERE user = 'dbadmin' AND
host = 'localhost';
请注意, PASSWORD()
函数根据纯文本计算哈希值。
使用 SET PASSWORD 语句更改 MySQL 用户密码
第二种更改密码的方法是使用 SET PASSWORD
语句。
您可以使用 user@host
格式的用户帐户来更新密码。如果您需要更改其他帐户的密码,您的帐户至少需要有 UPDATE
权限。
通过使用该 SET PASSWORD
语句,您无需执行该 FLUSH PRIVILEGES
语句即可从授权表重新加载权限。
以下语句使用 SET PASSWORD
语句更改用户帐户 dbadmin
的密码:
SET PASSWORD FOR 'dbadmin'@'localhost' = PASSWORD('Db123654');
请注意,从 5.7.6 版开始,您不需要在 SET PASSWORD
语句中使用 PASSWORD()
,而是直接使用明文密码。 如下:
SET PASSWORD FOR 'dbadmin'@'localhost' = 'Db123654';
使用 ALTER USER 语句更改 MySQL 用户密码
第三种更改用户帐户密码的方法是使用 ALTER USER
带有 IDENTIFIED BY
子句的语句。
以下 ALTER USER
语句将 dbadmin
用户的密码更改 为 Db123654
:
ALTER USER dbadmin@localhost IDENTIFIED BY 'Db123654';
如果您想重置 MySQL root
帐户的密码,则需要在不使用授权表验证的情况下强制 MySQL 数据库服务器停止并重新启动。
结论
本文通过实例介绍了 3 中修改用户密码的方法:
- 通过
UPDATE
语句修改 mysql 数据库中的 user 表。 - 使用
SET PASSWORD
语句。 - 使用
ALTER USER
语句。