MySQL 用户账户解锁

2025年3月17日 | 阅读 3 分钟

解锁是一种机制,允许用户释放与账户关联的所有锁或任何特定锁。在本文中,我们将学习如何在 MySQL 服务器中解锁用户账户。

当使用 CREATE USER… UNLOCK 语句创建新用户账户时,新用户将处于锁定状态。

如果我们要从现有用户账户释放锁,我们需要使用 ALTER USER… ACCOUNT UNLOCK 语句,如下所示:

在此语法中,我们首先需要在 ALTER USER 关键字后面指定要释放锁的用户账户名。接下来,我们需要在用户名旁边提供 ACCOUNT UNLOCK 子句。需要注意的是,IF EXISTS 选项也可以用于仅在账户存在于服务器时才解锁它。

MySQL 还允许我们使用以下语句同时解锁多个用户账户

在此语法中,我们需要提供一个逗号分隔的用户名列表,以便在单个查询中解锁多个账户。如果未在语句中指定 ACCOUNT UNLOCK 子句,则账户的解锁状态将保持不变。

MySQL 使用 mysql.user 系统表的 account_locked 列来存储账户锁定状态。我们可以使用 SHOW CREATE USER 语句来验证账户是否已解锁或被锁定。如果此列的值为 Y,则表示账户被锁定。如果包含 N,则表示账户已解锁。

如果我们尝试在未解锁的情况下连接到账户,MySQL 会发出一个错误,并将以下消息写入错误日志:

MySQL 用户账户解锁示例

让我们通过示例了解如何解锁用户账户。首先,我们将使用以下语句创建一个名为 javatpoint@localhost 的新用户账户,并将其设置为锁定状态:

接下来,我们将执行以下语句来显示用户账户及其状态:

我们应该会得到以下输出:

MySQL Unlock Account

在此输出中,我们可以看到 mysql.user 系统表中的 account_locked 列显示为 Y。这意味着用户名 javatpoint 在服务器上已被锁定。

如果我们尝试在 MySQL 服务器上连接此账户而不先解锁它,它会返回以下错误:

这是错误消息

MySQL Unlock Account

因此,我们可以使用 ALTER USER 语句在访问账户之前解锁它,如下所示:

在下面的输出中,我们可以看到 account_locked 列的状态为 N。这意味着用户账户 javatpoint 没有被锁定。

MySQL Unlock Account

在本篇文章中,我们学习了如何使用 ALTER TABLE ACCOUNT UNLOCK 语句从现有用户账户释放锁。


下一主题MySQL 查询