更新时间:2026-07-02 GMT+08:00
分享

SET ROLE

功能描述

设置当前会话的当前用户标识符,即在当前数据库会话中切换或启用指定角色。

注意事项

  • 当前会话的用户必须是指定的role_name角色的成员,系统管理员可以切换至任意角色。
  • 可以使用SET ROLE添加权限或限制某个用户的权限。如果会话用户的角色具有INHERITS属性,则它将自动拥有SET ROLE所设置角色的所有权限;在这种情况下,SET ROLE实际上是删除了所有直接赋予会话用户的权限,以及它的所属角色的权限,仅保留指定角色的权限。另一方面,如果会话用户的角色具有NOINHERITS属性,则SET ROLE将删除直接赋予会话用户的权限,而获取指定角色的权限。

语法格式

  • 在当前数据库会话中切换或启用指定角色。
    1
    SET [ SESSION | LOCAL ] ROLE role_name PASSWORD '{password}';
    
  • 重置当前会话角色。
    1
    RESET ROLE;
    

参数说明

表1 SET ROLE参数说明

参数

描述

取值范围

SESSION

声明这个命令只对当前会话生效(缺省值)。

-

LOCALE

声明该命令仅对当前事务生效。

-

role_name

角色名称。

已有的角色名称。

password

角色的密码。

-

RESET ROLE

用于重置当前用户标识。

-

示例

查看当前会话用户。

1
SELECT CURRENT_USER;
 current_user
--------------
 dbadmin
(1 row)

创建名称为role_new的角色,并切换当前会话用户为role_new。

1
2
CREATE ROLE role_new IDENTIFIED BY '{Password}';
SET ROLE role_new PASSWORD '{password}';

查看当前会话用户,显示为role_new。

1
SELECT CURRENT_USER;
1
2
3
4
 current_user
--------------
 role_new
(1 row)

将当前用户重置为原会话用户。

1
RESET role;

相关文档