MySQL 8.4 Release Notes
15.7.1.4 删除角色语句
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节,“使用角色”。