摘要:在本教程中,您将学习如何使用CREATE USER .. ACCOUNT LOCK
和ALTER TABLE .. ACCOUNT LOCK
语句来锁定 MySQL 服务器中的用户帐户。
要锁定用户帐户,您可以使用CREATE USER .. ACCOUNT LOCK
语句:
CREATE USER account_name
IDENTIFIED BY 'password'
ACCOUNT LOCK;
Code language: SQL (Structured Query Language) (sql)
如果省略ACCOUNT LOCK
子句,则CREATE USER
语句默认会创建处于解锁状态的新用户。
或者您可以使用ALTER USER .. ACCOUNT LOCK
语句来锁定现有用户帐户:
ALTER USER account_name
IDENTIFIED BY 'password'
ACCOUNT LOCK;
Code language: SQL (Structured Query Language) (sql)
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;
Code language: SQL (Structured Query Language) (sql)
其次,显示用户帐户及其状态:
SELECT
user, host, account_locked
FROM
mysql.user
WHERE
user = 'david' AND
host='localhost';
Code language: SQL (Structured Query Language) (sql)
mysql.user
表中的account_locked
列指示帐户是否被锁定, Y
表示锁定, N
表示未锁定。
第三,使用用户帐户david
连接MySQL服务器,会收到错误:
mysql -u david -p
Enter password: ************
Code language: SQL (Structured Query Language) (sql)
这是错误消息:
ERROR 3118 (HY000): Access denied for user 'david'@'localhost'. Account is locked.
Code language: SQL (Structured Query Language) (sql)
B) 使用ACCOUNT LOCK
锁定现有用户帐户示例
首先,创建一个用户帐户dolphin@localhost
:
CREATE USER dolphin@localhost
IDENTIFIED BY 'Secret!pass1';
Code language: SQL (Structured Query Language) (sql)
其次,使用用户帐户dolphin@localhost
登录MySQL服务器:
mysql -u dolphin -p
Enter password: ********
Code language: SQL (Structured Query Language) (sql)
用户帐户dolphin@localhost
可以成功登录。
第三,使用ALTER TABLE LOCK ACCOUNT
语句锁定用户帐户dolphin@localhost
:
ALTER USER dolphin@localhost
ACCOUNT LOCK;
Code language: SQL (Structured Query Language) (sql)
四、显示用户状态:
SELECT
user, host, account_locked
FROM
mysql.user
WHERE
user = 'dolphin';
Code language: SQL (Structured Query Language) (sql)
用户帐户dolphin
按预期被锁定。
Locked_connects
变量状态变量显示使用锁定帐户尝试连接到 MySQL 服务器的次数。
当锁定的帐户尝试登录时,MySQL 将Locked_connects
状态变量加 1。
要显示锁定帐户的尝试次数,请使用以下命令:
SHOW GLOBAL STATUS
LIKE 'Locked_connects';
Code language: SQL (Structured Query Language) (sql)
在本教程中,您将学习如何使用CREATE USER .. ACCOUNT LOCK
和ALTER TABLE .. ACCOUNT LOCK
语句来锁定 MySQL 服务器中的用户帐户。