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