Mysql 简明教程

MySQL - Change Password

MySQL 为每个用户提供一个帐户,该帐户使用用户名和密码进行身份验证。MySQL 中的默认帐户是 root,没有密码(然而,可以使用语句为 root 设置密码)。类似地,其他用户定义的帐户可以使用 SQL 语句显式设置密码,或者可以使用 MySQL 系统自动生成密码。

MySQL Change User Password

与任何其他经过身份验证的帐户一样,MySQL 有一项规定,可以更改用户密码。但必须确保当前没有应用程序正在被用户使用。如果在不断开应用程序的情况下重置了密码,应用程序将无法再通过此用户连接到服务器。

我们可以使用以下三个 SQL 语句更改 MySQL 用户帐户的密码:

  1. UPDATE statement

  2. SET PASSWORD statement

  3. ALTER USER statement

The UPDATE Statement

在 MySQL 中更改用户密码的最基本方法是使用 UPDATE 语句。此语句用于更新帐户详细信息,包括“root”帐户的帐户密码。但是,一旦使用此语句完成修改,就必须使用 FLUSH PRIVILEGES 语句从 MySQL 数据库的授权表重新加载权限。

Syntax

以下是使用 UPDATE 语句更改密码的语法:

UPDATE mysql.user
SET authentication_string = PASSWORD(password_string)
WHERE User = user_name AND
      Host = host_name
FLUSH PRIVILEGES;

Example

以下示例演示如何使用 UPDATE 语句更改用户帐户的密码。首先,我们创建一个用户帐户“sample”,密码为 '123456':

CREATE USER 'sample'@'localhost' IDENTIFIED BY '123456';

以下是所获得的输出 −

Query OK, 0 rows affected (0.02 sec)

现在,可以使用以下查询验证用户列表:

SELECT User FROM mysql.user;

表将显示如下 -

如果你有 MySQL 版本 5.7.6 及更高版本,则可以使用以下查询直接修改 mysql.user 表:

UPDATE user
SET authentication_string = PASSWORD('xxxxxx')
WHERE User = 'sample' AND Host = 'localhost';

执行上面的代码后,我们得到以下输出: -

Query OK, 1 row affected (0.02 sec)
Rows matched: 1  Changed: 1  Warnings: 0

对用户帐户进行更改后,你需要使用 FLUSH PRIVILEGES 语句立即应用这些更改:

FLUSH PRIVILEGES;

获得的输出如下所示 −

Query OK, 0 rows affected (0.01 sec)

The SET PASSWORD statement

SET PASSWORD 语句用于为 MySQL 帐户设置密码。它包含一个“密码验证”子句,该子句让系统知道需要用另一个密码替换当前用户密码。

Syntax

以下是 SET PASSWORD 语句的语法:

SET PASSWORD FOR username@localhost = password_string;

你还可以不使用 FOR 子句使用 SET PASSWORD 更改密码。但是,要使用此语法,你必须已经登录到你想要更改其密码的用户帐户:

SET PASSWORD = password_string;

Example

现在,使用 SET PASSWORD 语句,我们将密码更改为 'hello':

SET PASSWORD = 'hello';

Output

以下是上面代码的输出: -

Query OK, 0 rows affected (0.01 sec)

The ALTER USER Statement

要更改 MySQL 用户帐户的任何内容(包括更改密码),ALTER USER 语句比 SET PASSWORD 语句更可取。此语句不是单独使用,而是后面跟着 IDENTIFIED BY 子句来验证新密码。

请注意,用户必须连接到 MySQL 服务器才能使此语句起作用。

Syntax

以下是使用 ALTER USER 语句更改密码的语法:

ALTER USER username IDENTIFIED BY 'password';

Example

这里,我们使用下面给出的 ALTER USER 查询,将 sample@localhost 的密码改为“000000” −

ALTER USER sample@localhost IDENTIFIED BY '000000';

Output

以下代码的输出如下:

Query OK, 0 rows affected (0.01 sec)

密码现已更改。要验证,使用新密码再次登录到示例帐户 −

C:\Windows\System32> mysql -u sample -p
Enter password: ******

mysql>

Changing User password Using a Client Program

除了使用 MySQL 查询更改 MySQL 中的用户密码外,我们还可以使用 Node.js、PHP、Java 和 Python 等客户端程序实现相同的结果。

Syntax

以下是语法 −

Example

以下是在 MySQL 中使用客户端程序更改用户密码 −