程序员社区

MySQL系列教程 --- 29、MySQL解锁账户

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

CREATE USER…UNLOCK语句创建一个新用户帐户时,新用户存储为锁定状态。

如果我们想从现有的用户帐户中释放一个锁,我们需要使用ALTER USER… ACCOUNT UNLOCK语句,如下所示:

ALTER USER  [IF EXISTS] user_account_name 帐户解锁;   

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

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

ALTER USER [IF EXISTS]   
    user_account_name1, user_account_name2, ...  
ACCOUNT UNLOCK;  

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

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

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

Access denied for user 'user_name'@'host_name'.  
An account is locked.   

MySQL 用户帐户解锁示例

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

mysql> CREATE USER IF NOT EXISTS javatpoint@localhost   
IDENTIFIED BY 'jtp123456'  
ACCOUNT LOCK;    

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

mysql> SELECT user, host, account_locked  
FROM mysql.user  
WHERE user = 'javatpoint' AND host = 'localhost';  

我们应该得到以下输出:

file

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

如果我们在 MySQL Server 中不解锁的情况下尝试连接此帐户,则会返回以下错误:

mysql -u javatpoint -p  
Enter password: *********  

这是错误消息:

file

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

mysql> ALTER USER 'javatpoint'@'localhost' ACCOUNT UNLOCK;  

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

file

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

赞(0) 打赏
未经允许不得转载:IDEA激活码 » MySQL系列教程 --- 29、MySQL解锁账户

一个分享Java & Python知识的社区