MySQL 9.0 发行说明
DROP ROLE [IF EXISTS] role [, role ] ...
DROP ROLE
删除一个或多个角色(命名权限集合)。要使用此语句,您必须具有全局 DROP ROLE
或 CREATE USER
权限。当 read_only
系统变量启用时,DROP ROLE
还需要 CONNECTION_ADMIN
权限(或已弃用的 SUPER
权限)。
具有 CREATE USER
权限的用户可以使用此语句来删除已锁定或未锁定的账户。具有 DROP ROLE
权限的用户只能使用此语句来删除已锁定的账户(未锁定的账户可能是用于登录服务器而不是仅作为角色的用户账户)。
在 mandatory_roles
系统变量值中命名的角色无法删除。
DROP ROLE
对于所有命名的角色,要么成功,要么回滚且没有任何影响。默认情况下,如果尝试删除不存在的角色,就会发生错误。如果给出了 IF EXISTS
子句,则对于每个不存在的命名角色,语句会生成一个警告,而不是错误。
如果语句成功,它会被写入二进制日志,但如果失败,它不会写入;在这种情况下,会发生回滚,并且不会进行任何更改。写入二进制日志的语句包含所有命名的角色。如果给出了 IF EXISTS
子句,则这甚至包括不存在且未删除的角色。
每个角色名都使用 第 8.2.5 节,“指定角色名” 中描述的格式。例如
DROP ROLE 'admin', 'developer';
DROP ROLE 'webapp'@'localhost';
如果省略了角色名的主机名部分,则默认为 '%'
。
删除的角色将自动从授予该角色的任何用户帐户(或角色)中撤销。在对该帐户的任何当前会话中,其调整后的权限将从执行的下一个语句开始生效。
有关角色使用示例,请参见 第 8.2.10 节,“使用角色”。