MySql教程
MySql用户管理
MySQL数据库
MySql表格和视图
MySQL查询
MySQL索引
MySQL子句
MySQL授权
MySql控制流
MySQL条件
MySQL连接
MySQL键
MySQL触发器
MySQL聚合函数
MySQL常用
MySQL正则表达式
MySql差异性

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用户帐户锁定示例

让我们通过示例了解锁定用户帐户的工作:

1、使用ACCOUNT LOCK子句锁定新用户帐户

首先,我们将使用以下语句在锁定状态下创建一个名为 lidihuo @ localhost 的新用户帐户:
mysql> CREATE USER if NOT EXISTS lidihuo@localhost 
IDENTIFIED BY 'jtp123456'
ACCOUNT LOCK;  
接下来,我们将执行以下语句以显示用户帐户及其状态:
mysql> SELECT user, host, account_locked
FROM mysql.user
WHERE user = 'lidihuo' AND host = 'localhost';
我们应该得到以下输出:
MySQL Lock Account
在此输出中,我们可以看到 mysql.user 系统表中的 account_locked 列指示为Y。这意味着用户名 lidihuo 已锁定在服务器上。
如果我们尝试访问用户帐户lidihuo以连接到MySQL Server,则尝试失败,并且我们将收到错误消息:
mysql-u lidihuo-p
Enter password: *********
这是错误消息:
MySQL锁定帐户

2、为现有用户帐户锁定的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已成功登录。
MySQL锁定帐户
现在,我们将使用 ALTER TABLE 锁定帐户锁定该用户帐户的语句,如下所示:
mysql> ALTER USER markus@localhost ACCOUNT LOCK;
同样,我们将执行以下语句来显示用户状态:
mysql> SELECT user, host, account_locked
FROM mysql.user
WHERE user = 'markus' AND host = 'localhost';
我们可以看到以下输出,表明用户帐户标记已成功锁定:
MySQL Lock Account
如果我们想显示连接到锁定帐户的MySQL Server的尝试次数,则需要locked_connects变量。每次我们尝试连接锁定的用户帐户时,MySQL都会将该变量的状态增加1、请参见以下命令:
mysql> SHOW GLOBAL STATUS LIKE 'Locked_connects';
执行后,我们将获得以下输出,表明我们已尝试三次连接锁定的用户帐户:
MySQL锁定帐户
昵称: 邮箱:
Copyright © 2022 立地货 All Rights Reserved.
备案号:京ICP备14037608号-4