更改 MySQL 用户密码的三种方法

本文介绍了在 MySQL 中如何使用 UPDATE , SET PASSWORDALTER USER 语句更改 MySQL 用户密码。

更改 MySQL 用户帐户的密码是一个常用的操作,但是在更改 MySQL 用户帐户的密码之前 ,您应该考虑以下重要问题:

  • 您要更改哪个用户帐户的密码?
  • 哪个应用程序正在使用正在更改密码的用户帐户?如果更改密码了而没有更改使用该用户帐户的应用程序的连接字符串,该应用程序将无法连接到数据库服务器。

回答完这些问题之后,您可以开始更改用户帐户的密码。

在 MySQL 中,您可以使用 UPDATESET PASSWORDALTER USER 语句来更改用户的密码。

使用 UPDATE 语句更改 MySQL 用户密码

第一种修改密码的方法是使用 UPDATE 语句更新 mysql 数据库中的 user 表。

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

假设您要更改来自主机 localhost 连接的用户 dbadmin 的密码为 Db123654,则需要按步骤执行以下语句:

  1. 选择 mysql 数据库:

    USE mysql;
    
  2. 更新密码:

    UPDATE user
    SET password = PASSWORD('Db123654')
    WHERE user = 'dbadmin' AND
          host = 'localhost';
    
  3. 刷新权限:

    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 中修改用户密码的方法:

  1. 通过 UPDATE 语句修改 mysql 数据库中的 user 表。
  2. 使用 SET PASSWORD 语句。
  3. 使用 ALTER USER 语句。