MySQL 支持使用and 语句的ACCOUNT LOCKandACCOUNT UNLOCK子句来锁定和解锁用户帐户 : CREATE USERALTER USER
-
与 一起使用时
CREATE USER,这些子句指定新帐户的初始锁定状态。在没有任何一个条款的情况下,帐户将在解锁状态下创建。如果
validate_password启用该组件,则不允许创建没有密码的帐户,即使该帐户已被锁定。请参阅 第 6.4.3 节,“密码验证组件”。 -
与 一起使用时
ALTER USER,这些子句指定现有帐户的新锁定状态。在没有任何一个条款的情况下,帐户锁定状态保持不变。从 MySQL 8.0.19 开始,
ALTER USER ... UNLOCK解锁因登录失败次数过多而暂时锁定的语句命名的任何帐户。请参见 第 6.2.15 节,“密码管理”。
帐户锁定状态记录在系统表的 account_locked列中 mysql.user。from 的输出 SHOW CREATE USER指示帐户是锁定还是解锁。
如果客户端尝试连接到锁定的帐户,则尝试失败。服务器递增Locked_connects状态变量,该 变量指示尝试连接到锁定帐户的次数,返回 ER_ACCOUNT_HAS_BEEN_LOCKED错误,并将消息写入错误日志:
Access denied for user 'user_name'@'host_name'.
Account is locked.
锁定帐户不会影响能够使用假定锁定帐户身份的代理用户进行连接。它也不影响执行具有DEFINER命名锁定帐户的属性的存储程序或视图的能力。也就是说,锁定帐户不会影响使用代理帐户或存储的程序或视图的能力。
帐户锁定功能取决于系统表中account_locked列 的存在 mysql.user。对于从早于 5.7.6 的 MySQL 版本升级,请执行 MySQL 升级过程以确保此列存在。请参阅 第 2.11 节,“升级 MySQL”。对于没有account_locked列的非升级安装,服务器将所有帐户视为未锁定,并且使用ACCOUNT LOCKorACCOUNT UNLOCK子句会产生错误。




