MySQL 8.3 Release Notes
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 节“使用角色”。