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
:激活授予该帐户的所有角色,但指定的除外。指定的这些角色无需存在或被授予给该帐户。角色
[,角色
] ...
:激活指定的这些角色,这些角色必须已授予给该帐户。角色
[,角色
] ...
SET DEFAULT ROLE
和 SET ROLE DEFAULT
是不同的语句。
SET DEFAULT ROLE
定义在帐户会话中默认情况下要激活哪些帐户角色。SET ROLE DEFAULT
将当前会话中的活动角色设置为当前帐户的默认角色。
有关角色使用示例,请参见 “第 8.2.10 节“使用角色””。