Documentation Home
MySQL 8.4 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 39.8Mb
PDF (A4) - 39.9Mb
Man Pages (TGZ) - 257.9Kb
Man Pages (Zip) - 364.9Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


15.7.1.4 删除角色语句

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

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