Mysql 简明教程
MySQL - Lock User Account
通过阻止未经授权的事务或可疑活动来增加数据库的安全性,从而引入了 MySQL 中的帐户锁定。
在许多情况下,出于各种原因需要锁定 MySQL 用户帐户。例如,在完成帐户授权时等待,或如果该帐户已长时间处于非活动状态等。在这些情况下,锁定帐户将提高 MySQL 服务器的效率。
MySQL Lock User Account
为了检查某个帐户是否已锁定,MySQL 在“mysql.user”表中提供了“account_locked”属性,该属性将分别保存“Y”或“N”值。值“Y”表示帐户已锁定,而“N”表示未锁定。
Locking New Accounts
MySQL 提供 ACCOUNT LOCK 子句来锁定帐户。将此子句与 CREATE USER 和 ALTER USER 语句一起使用将分别创建新的已锁定用户或锁定现有用户。
Syntax
以下是 CREATE USER… ACCOUNT LOCK 语句的语法 −
CREATE USER username@hostname
IDENTIFIED BY 'new_password' ACCOUNT LOCK;
Example
在以下查询中,我们使用 CREATE USER 语句在 MySQL 中创建新的已锁定用户帐户 −
CREATE USER test@localhost IDENTIFIED BY 'asdfgh' ACCOUNT LOCK;
Verification
我们使用以下 SELECT 语句验证用户 'test' 的帐户是否已锁定:
SELECT User, Host, account_locked
FROM mysql.user WHERE User = 'test';
以上代码的输出如下所示 −
由于账户被锁定,所以除非再次将其解锁,否则你无法访问该账户。查看下方的示例:
C:\Windows\System32> mysql -u test -p
Enter password: ******
产生的结果如下 −
ERROR 3118 (HY000): Access denied for user 'test'@'localhost'. Account is locked.
Locking Existing Accounts
我们可以在 MySQL 中使用 ALTER USER… ACCOUNT LOCK 语句锁定现有帐户。但在执行查询之前,你必须确保用户处于解锁状态。
Verification
我们可以使用以下 SELECT 语句来验证“示例”用户的帐户是否被锁定 −
SELECT User, Host, account_locked
FROM mysql.user WHERE User = 'sample';
获得的结果如下所示 −
为了验证帐户是否被锁定,让我们如以下查询中所示访问它 −
C:\Windows\System32> mysql -u sample -p
Enter password: ******
我们得到了如下输出 −
ERROR 3118 (HY000): Access denied for user 'sample'@'localhost'. Account is locked.