SET SESSION AUTHORIZATION

设置会话角色标识符和当前会话的当前角色标识符。

概要

SET [SESSION | LOCAL] SESSION AUTHORIZATION rolename

SET [SESSION | LOCAL] SESSION AUTHORIZATION DEFAULT

RESET SESSION AUTHORIZATION

描述

此命令将会话角色标识符和当前SQL会话上下文的当前角色标识符设置为rolename。 角色名称可以写为标识符或字符串文字。 使用此命令,例如,可以暂时成为非特权用户,然后再切换回为超级用户。

会话角色标识符最初设置为客户端提供的(可能经过身份验证的)角色名称。 当前角色标识符通常等于会话用户标识符,但是在setuid函数和类似机制的上下文中可能会暂时更改; 也可以通过[SET ROLE](SET_ROLE.html#topic1)进行更改。 当前用户标识符与权限检查相关。

仅当初始会话用户(已认证用户)具有超级用户特权时,才可以更改会话用户标识符。 否则,仅当命令指定了经过身份验证的用户名时,该命令才会被接受。

DEFAULTRESET表单将会话和当前用户标识符重置为原始身份验证的用户名。 这些表格可以由任何用户执行。

参数

SESSION 指定该命令对当前会话生效。这是默认值。

LOCAL 指定该命令仅对当前事务生效。 在COMMITROLLBACK之后,会话级设置将再次生效。 请注意,如果SET LOCAL在事务外部执行,则似乎无效。

rolename

指定的角色的名称。 NONE RESET 将会话和当前角色标识符重置为用于登录的角色的标识符。

示例

SELECT SESSION_USER, CURRENT_USER;
session_user | current_user
--------------+--------------
peter | peter

SET SESSION AUTHORIZATION 'paul';

SELECT SESSION_USER, CURRENT_USER;
session_user | current_user
--------------+--------------
paul | paul

兼容性

SQL标准允许其他一些表达式代替文字rolename出现,但是这些选项在实践中并不重要。 Greenplum数据库允许使用标识符语法(rolename),而SQL则不允许。 SQL在事务期间不允许使用此命令。 Greenplum数据库没有进行此限制。 SESSIONLOCAL修饰符是Greenplum数据库的扩展名,RESET语法也是如此。

另见

[SET ROLE](SET_ROLE.html#topic1)

Parent topic: SQL Command Reference

当前内容版权归GreenPlum和翻译组所有,若有侵权请联系删除下架 修订时间: 2024-09-15 21:48:11

results matching ""

    No results matching ""