遵化市建昌街城源电脑经销部

关键词:电脑知识网

新闻中心

MySQL如何锁定账户和解锁账户

栏目:软件资讯 日期: 作者:admin 阅读:1

一、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.

如果我们在语句中没有指定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子句锁定新的用户帐户首先,我们将使用以下语句创建一个名为javatpoint@localhost的新用户帐户并处于锁定状态:




mysql> CREATE USER IF NOT EXISTS javatpoint@localhost IDENTIFIED BY 'jtp123456'ACCOUNT LOCK;

接下来,我们将执行以下语句来显示用户账户及其状态:




mysql> SELECT user, host, account_lockedFROM mysql.userWHERE user = 'javatpoint' AND host = 'localhost';

我们应该获得以下输出

image.png

在此输出中,我们可以看到mysql.user系统表中的account_locked列表示Y。这意味着用户名javatpoint在服务器上被锁定。如果我们尝试访问用户帐户javatpoint并连接到MySQL服务器,尝试将失败,并且我们将收到一个错误:

image.png


mysql -u javatpoint -pEnter password: *********

这是错误信息:

2. MySQL为现有用户账户进行账户锁定我们可以通过创建一个名为markus@localhost的新用户账户来理解这个问题,使用以下语句:



mysql> CREATE USER IF NOT EXISTS markus@localhost IDENTIFIED BY 'mark12345';

接下来,我们将使用新创建的用户帐户markus@localhost登录MySQL服务器,步骤如下:



mysql -u markus -pEnter password: *********

我们将获得以下输出,这意味着用户帐户 markus@localhost 成功登录。

现在,我们将使用 ALTER TABLE LOCK ACCOUNT语句来锁定此用户帐户,如下所示:


mysql> ALTER USER markus@localhost ACCOUNT LOCK;

再次,我们将执行以下语句来显示用户状态:




mysql> SELECT user, host, account_lockedFROM mysql.userWHERE user = 'markus' AND host = 'localhost';

我们可以看到下面的输出,这表明用户帐户 markus 已成功锁定:

image.png

如果我们想要展示被锁定账户的连接MySQL服务器的尝试次数,我们需要使用locked_connects变量。每次我们尝试连接被锁定的用户账户时,MySQL会把这个变量的状态增加1。请参考下面的命令:


mysql> SHOW GLOBAL STATUS LIKE 'Locked_connects';

执行后,我们将得到如下输出,显示我们已经尝试了三次连接被锁定的用户帐户:

image.png

二、MySQL解锁账户解锁是一种允许用户释放所有锁定或与账户关联的特定锁定的机制。在本文中,我们将学习如何在MySQL服务器中解锁用户账户。当CREATE USER… UNLOCK语句创建一个新用户账户时,新用户将被存储为锁定状态。如果我们想要从已存在的用户账户释放锁定,我们需要使用ALTER USER… ACCOUNT UNLOCK语句,如下所示:


ALTER USER [IF EXISTS] user_account_name ACCOUNT UNLOCK;

在这个语法中,我们首先需要在ALTER USER关键字之后指定用户账户名称 ,然后在用户名称旁边提供ACCOUNT UNLOCK子句。需要注意的是,IF EXISTS选项也可以用来在服务器中仅在账户存在时解锁该账户。MySQL还允许我们通过以下语句同时解锁 多个用户账户 :




ALTER USER [IF EXISTS]     user_account_name1, user_account_name2, ...ACCOUNT UNLOCK;

在这个语法中,我们需要提供一个逗号分隔的用户列表来解锁多个账户。如果我们在语句中没有指定ACCOUNT UNLOCK子句,那么账户解锁状态将保持不变。MySQL使用mysql.user系统表的account_locked列来存储账户锁定状态。我们可以使用SHOW CREATE USER语句验证账户是解锁还是锁定的。如果这个列的值是Y,表示账户被锁定。如果值是N,表示账户被解锁。如果我们在未解锁的情况下尝试连接到该账户,MySQL会发出一个错误,并将以下消息写入错误日志:



Access denied for user 'user_name'@'host_name'.An account is locked.

MySQL用户账户解锁示例让我们通过示例了解如何解锁用户账户。首先,我们将使用以下语句创建一个名为javatpoint@localhost的新用户账户,状态为锁定状态:




mysql> CREATE USER IF NOT EXISTS javatpoint@localhost IDENTIFIED BY 'jtp123456'ACCOUNT LOCK;

接下来,我们将执行以下语句来显示用户账号和其状态:




mysql> SELECT user, host, account_lockedFROM mysql.userWHERE user = 'javatpoint' AND host = 'localhost';

我们应该得到以下输出:

image.png

在这个输出中,我们可以看到mysql.user系统表中的account_locked列指示为Y。这意味着用户名javatpoint在服务器上被锁定。如果我们在MySQL服务器中尝试使用此帐户进行连接而未解锁,将返回以下错误:



mysql -u javatpoint -pEnter password: *********

这里是错误信息:

image.png

因此,在访问之前,我们可以使用ALTER USER语句来解锁账户,如下所示:


mysql> ALTER USER 'javatpoint'@'localhost' ACCOUNT UNLOCK;

在下面的输出中,我们可以看到account_locked列的状态是N。这意味着用户帐户javatpoint没有被锁定。

image.png



相关资讯