文档首页
MySQL 8.4 参考手册
相关文档 下载本手册
PDF (US Ltr) - 39.9Mb
PDF (A4) - 40.0Mb
手册页 (TGZ) - 258.5Kb
手册页 (Zip) - 365.5Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 参考手册  /  ...  /  帐户锁定

8.2.20 帐户锁定

MySQL 支持使用 ACCOUNT LOCKACCOUNT UNLOCK 子句,用于 CREATE USERALTER USER 语句,来锁定和解锁用户帐户。

  • CREATE USER 一起使用时,这些子句指定新帐户的初始锁定状态。在没有这些子句的情况下,帐户将以解锁状态创建。

    如果启用了 validate_password 组件,则不允许创建没有密码的帐户,即使帐户已锁定。参见 第 8.4.3 节, “密码验证组件”

  • ALTER USER 一起使用时,这些子句指定现有帐户的新锁定状态。在没有这些子句的情况下,帐户锁定状态将保持不变。

    ALTER USER ... UNLOCK 将解锁由该语句命名的任何帐户,该帐户由于登录失败次数过多而被临时锁定。参见 第 8.2.15 节, “密码管理”

帐户锁定状态记录在 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 列。对于从早于 5.7.6 的 MySQL 版本升级,请执行 MySQL 升级过程以确保此列存在。参见 第 3 章, 升级 MySQL。对于没有 account_locked 列的未升级安装,服务器将所有帐户视为已解锁,使用 ACCOUNT LOCKACCOUNT UNLOCK 子句会产生错误。