SET ROLE语句
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';
每个角色名称使用“指定角色名称”中描述的格式。角色名称的主机名部分(如果省略)默认为'%'
。
直接(而不是通过角色)授予用户权限的特权不受更改活动角色的影响。
该语句允许以下角色说明符:
DEFAULT
:激活帐户默认角色。默认角色是用指定的角色SET DEFAULT ROLE
。当用户连接到服务器并成功进行身份验证时,服务器将确定要激活的角色作为默认角色。如果
activate_all_roles_on_login
启用了系统变量,则服务器将激活所有授予的角色。否则,服务器将SET ROLE DEFAULT
隐式执行。服务器仅激活可以激活的默认角色。对于无法激活的默认角色,服务器会将警告写入错误日志中,但客户端不会收到警告。如果用户
SET ROLE DEFAULT
在会话期间执行,则无法激活任何默认角色(例如,如果该默认角色不存在或未授予该用户),则会发生错误。在这种情况下,当前的活动角色不会更改。NONE
:将活动角色设置为NONE
(无活动角色)。ALL
:激活授予该帐户的所有角色。ALL EXCEPT role[,role] ...
:激活授予帐户的所有角色,但命名角色除外。命名角色不必存在或不授予该帐户。role[,role] ...
:激活必须授予帐户的命名角色。
注意
SET DEFAULT ROLE
和SET ROLE DEFAULT
是不同的陈述:
SET DEFAULT ROLE
定义默认情况下在帐户会话中要激活的帐户角色。SET ROLE DEFAULT
将当前会话中的活动角色设置为当前帐户的默认角色。
有关角色用法的示例,请参见“授权控制”。