DROP USER [IF EXISTS] user [, user] ...
该 DROP USER
语句删除一个或多个 MySQL 帐户及其权限。它从所有授权表中删除帐户的权限行。
在 mandatory_roles
系统变量值中命名的角色不能被删除。
要使用 DROP USER
, 您必须拥有全局 CREATE USER
权限,或者 mysql
系统架构的 DELETE
权限。当 read_only
系统变量启用时,DROP USER
还需要 CONNECTION_ADMIN
权限(或已弃用的 SUPER
权限)。
DROP USER
如果要删除的任何帐户被命名为存储对象的 DEFINER
属性,则失败并出现错误。(也就是说,语句失败,因为删除帐户将使存储对象变为孤立的。)要执行该操作,您必须拥有 SET_USER_ID
权限;在这种情况下,语句将成功并发出警告,而不是出现错误。有关详细信息,包括如何标识哪些对象将某个帐户命名为 DEFINER
属性,请参阅 孤立存储对象。
DROP USER
要么成功删除所有命名用户,要么回滚并且不执行任何操作。如果您尝试删除不存在的用户,默认情况下将出现错误。如果给出了 IF EXISTS
子句,则语句将为每个不存在的命名用户生成警告,而不是出现错误。
如果语句成功,则将其写入二进制日志;否则,回滚并且不执行任何操作。写入二进制日志的语句包括所有命名用户。如果给出了 IF EXISTS
子句,这包括甚至不存在的用户。
每个帐户名称使用 第 8.2.4 节“指定帐户名称” 中描述的格式。例如:
DROP USER 'jeffrey'@'localhost';
帐户名称的主机名部分,如果省略,默认为 '%'
。
DROP 用户
不会自动关闭任何打开的用户会话。相反,在删除用户时,如果该用户有打开的会话,那么语句不会生效,直到该用户的会话关闭。 一旦会话关闭,该用户将被删除,并且该用户下一次尝试登录将失败。这是设计的如此。
DROP 用户
不会自动删除或使数据库或对象无效,该用户创建的数据库或对象。这包括存储程序或视图,其中的 DEFINER
属性命名了被删除的用户。尝试访问这些对象可能会产生错误,如果它们在定义者安全上下文中执行。(关于安全上下文的信息,请参阅 第 27.6 节,“存储对象访问控制”。)