如何更改MySQL用户密码

MySQL用户是一条记录,其中包含登录信息,帐户特权以及MySQL帐户访问和管理数据库的主机信息。登录信息包括用户名和密码。在某些情况下,需要更改MySQL数据库中的用户密码。

要更改任何用户帐户的密码,必须记住以下信息:

  • 您要更改的用户帐户的详细信息。
  • 用户要更改其密码的应用程序。如果您在不更改应用程序连接字符串的情况下重置了用户帐户密码,则该应用程序将无法与数据库服务器连接。

MySQL允许我们以三种不同的方式更改用户帐户密码,如下所示:

  1. UPDATE语句
  2. 设置密码声明
  3. ALTER USER陈述

让我们看看如何通过使用上面的语句详细地更改MySQL中的用户帐户密码:

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

该语句是更改用户密码以更新MySQL数据库的用户表的第一种方法。在这里,您必须在执行UPDATE语句后使用FLUSH PRIVILEGE语句从MySQL数据库的授权表中重新加载特权。

假设,你要为用户更改或更新密码彼得从与密码的本地主机所连接jtp12345,执行SQL语句如下:

mysql> USE mysql; 

mysql> UPDATE user SET password = PASSWORD(‘jtp12345’) WHERE user = ‘peter’ AND host = ‘localhost’;

mysql> FLUSH PRIVILEGES;  

如果您使用的是MySQL 5.7.6或更高版本,则以上语句将不起作用。这是因为MySQL用户表包含只能存储密码的authentication_string列。现在,更高版本的UPDATE语句中包含authentication_string列,如以下语句所示。

mysql> USE mysql; 

mysql> UPDATE user SET authentication_string = PASSWORD(‘jtp12345’) WHERE user = ‘peter’ AND host = ‘localhost’; 

mysql> FLUSH PRIVILEGES;  

使用SET PASSWORD语句更改用户帐户密码

SET PASSWORD语句是更改MySQL数据库中用户密码的第二种方法。如果要更改其他帐户密码,则必须具有UPDATE特权。SET PASSWORD语句使用用户名@localhost格式的用户帐户。

无需使用FLUSH PRIVILEGES语句从MySQL数据库的授权表中重新加载特权。我们可以使用以下语句通过使用SET PASSWORD语句来更改用户帐户peter的密码:

mysql> SET PASSWORD FOR ‘peter’@’localhost’ = PASSWORD(‘jtp12345’);  

如果您使用的是MySQL 5.7.6或更高版本,则不建议使用上述语句,并且在以后的版本中将不起作用。相反,我们需要使用以下语句:

mysql> SET PASSWORD FOR ‘peter’@’localhost’ = jtp12345;  

使用ALTER USER语句更改用户帐户密码

ALTER USER语句是在MySQL数据库中更改用户密码的第三种方法。MySQL使用带有IDENTIFIED BY子句的ALTER USER语句来更改用户帐户的密码。我们需要使用以下语法使用jtp123更改用户peter的密码。

mysql> ALTER USER [email protected] IDENTIFIED BY ‘jtp123’;  

有时,您需要重置MySQL 帐户密码。在这种情况下,您可以强制停止并重新启动MySQL数据库服务器,而无需使用授权表验证。