如何在MySQL中锁定用户帐户

简介:在本教程中,您将学习如何使用CREATE USER .. ACCOUNT LOCK和ALTER TABLE .. ACCOUNT LOCK语句来锁定MySQL服务器中的用户帐户。

要锁定用户帐户,可以使用CREATE USER .. ACCOUNT LOCK语句:

CREATE USER account_name
IDENTIFIED BY 'password'
ACCOUNT LOCK;

如果您省略ACCOUNT LOCK子句,则CREATE USER语句默认情况下以解锁状态创建一个新用户。

或者,您可以使用ALTER USER .. ACCOUNT LOCK语句来锁定现有的用户帐户:

ALTER USER account_name
IDENTIFIED BY 'password'
ACCOUNT LOCK;

MySQL在mysql.user系统表的account_locked列中记录帐户锁定状态。
值Y和N分别表示锁定和解锁。

请注意,要解锁用户帐户,请使用ALTER USER .. ACCOUNT UNLOCK语句。

锁定用户帐户示例

让我们举一些锁定用户帐户的示例。

A)使用ACCOUNT LOCK锁定新帐户示例

首先,在锁定状态下创建一个新的用户帐户david @ localhost:

CREATE USER david@localhost
IDENTIFIED BY 'Secret!Pass1'
ACCOUNT LOCK;

其次,显示用户帐户及其状态:

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

mysql.user表中的account_locked列指示帐户是否被锁定,Y表示锁定,N表示未锁定。

第三,使用david用户帐户连接到MySQL Server,您将收到错误消息:

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

这是错误消息:

ERROR 3118 (HY000): Access denied for user 'david'@'localhost'. Account is locked.

B)使用ACCOUNT LOCK锁定现有的用户帐户示例

首先,创建一个用户帐户dolphin @ localhost:

CREATE USER dolphin@localhost
IDENTIFIED BY 'Secret!pass1';

其次,使用用户帐户dolphin @ localhost登录到MySQL服务器:

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

用户帐户dolphin @ localhost可以成功登录。

第三,使用ALTER TABLE LOCK ACCOUNT语句锁定用户帐户dolphin @ localhost:

ALTER USER dolphin@localhost
ACCOUNT LOCK;

四,显示用户状态:

SELECT 
    user, host, account_locked
FROM
    mysql.user
WHERE
    user = 'dolphin';

用户帐户海豚已按预期锁定。

Locked_connects变量状态变量显示使用锁定帐户连接到MySQL Server的尝试次数。

当锁定帐户尝试登录时,MySQL将Locked_connects状态变量增加1。

要显示锁定帐户的尝试次数,请使用以下命令:

SHOW GLOBAL STATUS 
LIKE 'Locked_connects';

在本教程中,您将学习如何使用CREATE USER .. ACCOUNT LOCK和ALTER TABLE .. ACCOUNT LOCK语句来锁定MySQL服务器中的用户帐户。

日期:2019-11-20 08:52:34 来源:oir作者:oir