如何在 MySQL 中解锁锁定的用户帐户

本文介绍了在 MySQL 中如何解锁一个或者多个锁定的用户帐户。

要解锁一个或多个锁定的用户,请使用 ALTER USER .. ACCOUNT UNLOCK 语句。

语句的基本语法

下面是解锁用户账户的语法:

ALTER USER [IF EXISTS] user@host [, user@host, ...]
ACCOUNT UNLOCK;

这里:

  • user@host 包含了用户名和主机名。多个账户请使用逗号分隔。
  • UNLOCK 关键字用于解锁用户。如果要锁定用户,请使用 LOCK

查询用户的锁定状态

您可以在 mysql 数据库中的 user 表中查看用户的锁定状态。mysql.user 表中的 account_locked 列中保存了帐户是否被锁定的状态: Y 指示了此用户被锁定, N 指示了此用户未锁定。

请使用以下 SQL 语句查询 MySQL 数据库服务器中的所有用户的锁定状态:

SELECT user, host, account_locked
FROM mysql.user;
+------------------+-----------+----------------+
| user             | host      | account_locked |
+------------------+-----------+----------------+
| root             | %         | N              |
| sqliz            | %         | Y              |
| sqliz2           | %         | Y              |
| test_role1       | %         | Y              |
| test_role2       | %         | Y              |
| test_user1_new   | %         | N              |
| test_user2_new   | %         | N              |
| test_user3_new   | %         | N              |
| testuser         | %         | N              |
| mysql.infoschema | localhost | Y              |
| mysql.session    | localhost | Y              |
| mysql.sys        | localhost | Y              |
| root             | localhost | N              |
+------------------+-----------+----------------+

这里的用户 sqlizsqliz2 是在 MySQL 锁定账户教程中被锁定的。

解锁用户帐户

要解锁 sqlizsqliz2 用户,请运行以下语句:

ALTER USER 'sqliz'@'%', 'sqliz2'@'%' ACCOUNT UNLOCK;

这里,我们在一个语句中解锁了 'sqliz'@'%''sqliz2'@'%'

要查询这两个用户账户的锁定状态,请运行以下 SQL 语句:

SELECT user, host, account_locked
FROM mysql.user
WHERE user LIKE 'sqliz%';
+--------+------+----------------+
| user   | host | account_locked |
+--------+------+----------------+
| sqliz  | %    | N              |
| sqliz2 | %    | N              |
+--------+------+----------------+

account_locked 列中的 N 指示了这两个用户已经不被锁定了。

结论

在 MySQL 中,您可以通过 ALTER USER .. ACCOUNT UNLOCK 语句解锁一个或者多个锁定的用户。