如何在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服务器中的用户帐户。