文档主页
MySQL 9.0 参考手册
相关文档 下载此手册
PDF (US Ltr) - 40.0Mb
PDF (A4) - 40.1Mb
手册页 (TGZ) - 258.2Kb
手册页 (Zip) - 365.3Kb
信息 (Gzip) - 4.0Mb
信息 (Zip) - 4.0Mb


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

15.7.1.5 DROP USER 语句

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

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

mandatory_roles 系统变量值中命名的角色不能删除。

要使用 DROP USER,您必须拥有全局 CREATE USER 权限,或者 DELETEmysql 系统架构的权限。当 read_only 系统变量启用时,DROP USER 还需要 CONNECTION_ADMIN 权限(或弃用的 SUPER 权限)。

DROP USER 如果要删除的任何帐户被命名为任何存储对象的 DEFINER 属性,则会失败并报错。(也就是说,如果删除帐户会导致存储对象成为孤儿,则该语句将失败。)要强制执行此操作,您必须具有 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.7 节,“存储对象访问控制”。)