返回介绍

I. 教程

II. SQL 语言

III. 服务器管理

IV. 客户端接口

V. 服务器端编程

VI. 参考手册

VII. 内部

VIII. 附录

SET SESSION AUTHORIZATION

发布于 2019-09-30 03:11:48 字数 1404 浏览 1011 评论 0 收藏 0

名称

SET SESSION AUTHORIZATION--为当前会话设置会话用户标识符和当前用户标识符

语法

SET [ SESSION | LOCAL ] SESSION AUTHORIZATION username
SET [ SESSION | LOCAL ] SESSION AUTHORIZATION DEFAULT
RESET SESSION AUTHORIZATION

描述

这条命令把当前会话环境里的会话用户标识和当前用户标识都设置为 username 。这个用户名可以写成一个标识符或者一个字符串文本。使用这个命令,可以临时变成一个非特权用户,稍后再切换回超级用户。

会话用户标识符一开始设置为(可能经过认证的)客户端提供的用户名。当前用户标识符通常等于会话用户标识符,但是可能在"setuid"的环境里或者类似的机制里临时改变。也可以用 SET ROLE 来修改。当前用户的身份和权限检查有关。

只有在初始会话用户(已认证用户)有超级用户权限的时候,会话用户标识符才能改变。否则,只有在指定了被认证的用户名的情况下,系统才接受该命令。

The SESSIONLOCAL 修饰词和普通 SET 命令里的作用相同。

The DEFAULTRESET 形式重置会话和当前用户标识符为初始认证的用户名。这些形式可以为任何用户执行。

例子

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 标准允许一些其它的表达式出现在文本 username 的位置上,不过这个东西实际上并不重要。PostgreSQL 允许标识符语法("username"),而 SQL 不允许。SQL 不允许在一个事务的过程中用这条命令;PostgreSQL 没有这个限制,因为没有什么理由不允许这样用。SESSIONLOCAL 是 PostgreSQL 扩展,RESET 语法也是。

标准把执行这条命令所需要的权限留给具体实现来定义。

又见

SET ROLE

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文