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.11 设置角色语句

SET ROLE {
    DEFAULT
  | NONE
  | ALL
  | ALL EXCEPT role [, role ] ...
  | role [, role ] ...
}

SET ROLE 修改当前用户的有效权限,以指定其授予的角色是否激活。授予的角色包括用户授予的角色和mandatory_roles系统变量值中指定的角色。

示例:

SET ROLE DEFAULT;
SET ROLE 'role1', 'role2';
SET ROLE ALL;
SET ROLE ALL EXCEPT 'role1', 'role2';

每个角色名称都遵循第8.2.5节,“指定角色名称”中的格式。角色名称中的主机名称部分,如果省略,默认为'%'

用户直接授予的权限(而不是通过角色)将不受激活角色变化的影响。

该语句允许以下角色指定符:

  • DEFAULT:激活账户默认角色。默认角色是使用SET DEFAULT ROLE指定的。

    当用户连接到服务器并成功身份验证时,服务器确定要激活的默认角色。如果activate_all_roles_on_login系统变量启用,服务器激活所有授予的角色。否则,服务器隐式执行SET ROLE DEFAULT语句。服务器激活的默认角色必须可以激活。服务器将错误日志中写入警告信息,但客户端不会收到警告。

    如果用户在会话中执行SET ROLE DEFAULT语句,发生错误,如果任何默认角色不能激活(例如,如果它不存在或不是授予给用户)。在这种情况下,当前激活的角色不变。

  • NONE:将激活的角色设置为NONE(无激活角色)。

  • ALL:激活所有授予给账户的角色。

  • ALL EXCEPT role [, role ] ...:激活所有授予给账户的角色,except those named. The named roles need not exist or be granted to the account.

  • role [, role ] ...:激活指定的角色,must be granted to the account.

Note

SET DEFAULT ROLESET ROLE DEFAULT是不同的语句:

关于角色使用示例,请参见第8.2.10节,“使用角色”