Documentation Home
MySQL 8.4 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 39.8Mb
PDF (A4) - 39.9Mb
Man Pages (TGZ) - 257.9Kb
Man Pages (Zip) - 364.9Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


8.2.20 账户锁定

MySQL支持使用ACCOUNT LOCKACCOUNT UNLOCK子句来锁定或解锁用户账户,用于CREATE USERALTER USER语句:

账户锁定状态记录在mysql.user系统表中的account_locked列。SHOW CREATE USER语句的输出将显示账户是否锁定或未锁定。

如果客户端尝试连接到一个锁定的账户,连接失败。服务器将增加Locked_connects状态变量的值,该变量表示尝试连接到锁定账户的次数,并返回一个ER_ACCOUNT_HAS_BEEN_LOCKED错误,并将消息写入到错误日志:

Access denied for user 'user_name'@'host_name'.
Account is locked.

锁定账户不影响使用代理用户假设锁定的账户身份的能力,也不影响执行具有DEFINER属性命名锁定账户的存储程序或视图。即,使用代理账户或存储程序或视图的能力不会受到锁定账户的影响。

账户锁定功能依赖于mysql.user系统表中的account_locked列存在。如果升级自MySQL版本低于5.7.6,需要执行MySQL升级程序以确保该列存在。见Chapter 3,Upgrading MySQL。对于非升级安装没有account_locked列的服务器,将视所有账户为未锁定,并使用ACCOUNT LOCKACCOUNT UNLOCK子句时产生错误。