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 子句 指定新用户帐户的初始锁定状态。如果我们没有在语句中指定这个子句,那么新创建的用户默认存储在解锁状态。如果我们在创建用户的过程中启用了validate_password插件,即使它被锁定,我们也无法创建没有密码的帐户。
MySQL还允许我们通过使用 ALTER USER... ACCOUNT LOCK 语句来提供对现有用户帐户的锁定,如下所示:
ALTER USER account_name IDENTIFIED BY 'password' ACCOUNT LOCK;
如果我们没有在语句中指定 ACCOUNT LOCK 子句,则帐户锁定状态保持不变。
MySQL 使用mysql.user 系统表的 account_locked 列来存储帐户锁定状态。我们可以使用SHOW CREATE USER语句来验证帐户是解锁还是锁定。如果此列值为Y,则表示该帐户已锁定。如果它包含N,则表示该帐户已解锁。
如果我们将尝试访问锁定的帐户,则尝试失败,并且 MySQL 发出错误,将以下消息写入错误日志:
Access denied for user 'user_name'@'host_name'.
An account is locked.
一、MySQL 用户帐户锁定的示例
让我们通过示例了解锁定用户帐户的工作原理:
使用 ACCOUNT LOCK 子句锁定新用户帐户
首先,我们将使用以下语句在锁定状态下创建一个名为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';
我们应该得到以下输出:
在这个输出中,我们可以看到mysql.user系统表中的account_locked列显示为 Y。这意味着用户名javatpoint在服务器上被锁定。
如果我们尝试访问用户账户 javatpoint 连接 MySQL 服务器,尝试失败,我们将收到错误:
mysql -u javatpoint -p
Enter password: *********
这是错误消息:
现有的 MySQL 帐户锁定
我们可以通过使用以下语句创建一个名为markus@localhost的新用户帐户来理解它:
mysql> CREATE USER IF NOT EXISTS markus@localhost
IDENTIFIED BY 'mark12345';
接下来,我们将使用新创建的用户帐户markus@localhost登录 MySQL 服务器,如下所示:
mysql -u markus -p
Enter password: *********
我们将得到以下输出,这意味着用户帐户markus@localhost已成功登录。
现在,我们将使用ALTER TABLE LOCK ACCOUNT语句来锁定这个用户帐户,如下所示:
mysql> ALTER USER markus@localhost ACCOUNT LOCK;
同样,我们将执行以下语句来显示用户状态:
mysql> SELECT user, host, account_locked
FROM mysql.user
WHERE user = 'markus' AND host = 'localhost';
我们可以看到以下输出表明用户帐户标记已成功锁定:
如果我们想显示尝试连接到锁定帐户的 MySQL 服务器的次数,我们需要locked_connects 变量。每次我们尝试连接锁定的用户帐户时,MySQL 都会将此变量的状态增加 1。请参见以下命令:
mysql> SHOW GLOBAL STATUS LIKE 'Locked_connects';
执行后,我们将得到这个输出,表明我们已经尝试了 3 次来连接锁定的用户帐户:
热门文章
优秀文章