• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • DROP ROLE语句

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

    DROP ROLE删除一个或多个角色(特权的命名集合)。要使用此语句,您必须具有全局DROP ROLECREATE USER特权。当read_only启用了系统变量,DROP ROLE另外需要CONNECTION_ADMINSUPER特权。

    从MySQL 8.0.16开始,具有CREATE USER特权的用户可以使用此语句删除已锁定或未锁定的帐户。具有DROP ROLE特权的用户只能使用此语句删除已锁定的帐户(解锁的帐户可能是用于登录服务器的用户帐户,而不仅仅是角色)。

    mandatory_roles无法删除在系统变量值中命名的角色。

    DROP ROLE要么对所有命名角色都成功,要么回滚,并且在发生任何错误时不起作用。默认情况下,如果您尝试删除不存在的角色,则会发生错误。如果提供了该IF EXISTS子句,则该语句将为每个不存在的命名角色生成警告,而不是错误。

    如果成功,则将语句写入二进制日志;如果失败,则不写入语句。在这种情况下,将发生回滚并且不进行任何更改。写入二进制日志的语句包括所有命名角色。如果IF EXISTS给出该子句,则甚至包括不存在且未被删除的角色。

    每个角色名称使用“指定角色名称”中描述的格式。例如:

    DROP ROLE 'administrator', 'developer';
    DROP ROLE 'webapp'@'localhost';
    

    角色名称的主机名部分(如果省略)默认为'%'

    删除的角色会自动从授予该角色的任何用户帐户(或角色)中撤消。在此类帐户的任何当前会话中,其调整后的特权将从下一条执行的语句开始应用。