ACCOUNT LOCK
MySQL 支持使用andACCOUNT
UNLOCK
子句为CREATE
USER
and语句
锁定和解锁用户帐户
ALTER USER
:
与 一起使用时
CREATE USER
,这些子句指定新帐户的初始锁定状态。在没有任何一个条款的情况下,帐户将以解锁状态创建。如果
validate_password
启用该组件,则不允许创建没有密码的帐户,即使该帐户已锁定。请参阅 第 6.4.3 节,“密码验证组件”。与 一起使用时
ALTER USER
,这些子句指定现有帐户的新锁定状态。在没有任何一个条款的情况下,帐户锁定状态保持不变。从 MySQL 8.0.19 开始,
ALTER USER ... UNLOCK
解锁由于登录失败次数过多而暂时锁定的语句命名的任何帐户。请参阅 第 6.2.15 节,“密码管理”。
帐户锁定状态记录在
系统表的account_locked
列中
。mysql.user
来自的输出
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
LOCK
orACCOUNT UNLOCK
子句会产生错误。