Documentation Home

13.7.1.4 DROP ROLE 语句

DROP ROLE [IF EXISTS] role [, role ] ...

DROP ROLE删除一个或多个角色(命名的特权集合)。要使用此语句,您必须具有全局DROP ROLECREATE 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 节,“使用角色”