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


MySQL 8.4 参考手册  /  ...  /  DROP USER 语句

15.7.1.5 DROP USER 语句

DROP USER [IF EXISTS] user [, user] ...

DROP USER 语句用于删除一个或多个 MySQL 帐户及其权限。 它会从所有授权表中删除该帐户的权限行。

无法删除在 mandatory_roles 系统变量值中命名的角色。

要使用 DROP USER,您必须拥有全局 CREATE USER 权限,或对 mysql 系统模式拥有 DELETE 权限。 启用 read_only 系统变量后,DROP USER 还需要 CONNECTION_ADMIN 权限(或已弃用的 SUPER 权限)。

如果任何要删除的帐户被命名为任何存储对象的 DEFINER 属性,则 DROP USER 将失败并报错。(也就是说,如果删除一个帐户会导致存储对象成为孤立对象,则该语句将失败。)要执行此操作,您必须拥有 SET_ANY_DEFINERALLOW_NONEXISTENT_DEFINER 权限;在这种情况下,该语句将成功并发出警告,而不是失败并报错。有关其他信息,包括如何识别哪些对象将给定帐户命名为 DEFINER 属性,请参阅孤立存储对象

DROP USER 要么对所有指定的用户名都成功,要么在发生任何错误时回滚并且没有任何效果。默认情况下,如果您尝试删除不存在的用户,则会发生错误。如果给出了 IF EXISTS 子句,则该语句会为每个不存在的指定用户名生成警告,而不是错误。

如果该语句成功,则会写入二进制日志,但如果失败则不会写入;在这种情况下,将发生回滚,并且不会进行任何更改。写入二进制日志的语句包括所有指定的用户名。如果给出了 IF EXISTS 子句,则即使是不存在且未被删除的用户也将包括在内。

每个帐户名称都使用第 8.2.4 节“指定帐户名称”中描述的格式。例如

DROP USER 'jeffrey'@'localhost';

帐户名称的主机名部分(如果省略)默认为 '%'

重要

DROP USER 不会自动关闭任何打开的用户会话。相反,如果删除了具有打开会话的用户,则该语句在该用户的会话关闭之前不会生效。会话关闭后,该用户将被删除,并且该用户下次尝试登录将失败。这是设计使然

DROP USER 不会自动删除或使旧用户创建的数据库或其中的对象失效。这包括 DEFINER 属性指定了已删除用户的存储程序或视图。如果在定义者安全上下文中执行,则尝试访问此类对象可能会产生错误。(有关安全上下文的信息,请参阅第 27.6 节“存储对象访问控制”。)