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


15.7.1.5 删除用户语句

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

DROP USER 语句删除一个或多个 MySQL 账户和它们的权限。它从所有授权表中删除账户的权限行。

mandatory_roles 系统变量值中指定的角色不能被删除。

要使用DROP USER,你必须拥有全局CREATE USER 权限,或者DELETE 权限对mysql 系统架构。启用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';

账户名称中的主机名部分,如果省略,默认为'%'

Important

DROP USER不会自动关闭任何打开的用户会话。相反,在删除一个拥有开放会话的用户时,语句直到该用户的会话关闭才生效。一旦会话关闭,该用户被删除,并且该用户下一次登录失败。这是设计的

DROP USER不会自动删除或无效化该用户创建的数据库或对象,包括存储程序或视图,其中DEFINER属性命名了被删除的用户。尝试访问这些对象可能会产生错误,如果它们在定义者安全上下文中执行。(关于安全上下文,请参见第27.6节,“存储对象访问控制”。)