PostgreSQL SET SESSION AUTHORIZATION

2021-09-13 14:57 更新

SET SESSION AUTHORIZATION — 設(shè)置當(dāng)前會話的會話用戶標(biāo)識符和當(dāng)前用戶標(biāo)識符

大綱

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

描述

這個命令把當(dāng)前 SQL 會話的會話用戶標(biāo)識符和當(dāng)前用戶標(biāo)識符設(shè)置為 user_name。 用戶名可以被寫成一個標(biāo)識符或者一個字符串。例如,可以使用這個 命令臨時成為一個無特權(quán)用戶并且稍后切換回來成為一個超級用戶。

會話用戶標(biāo)識符初始時被設(shè)置為客戶端提供的(可能已認(rèn)證的)用戶名。 當(dāng)前用戶標(biāo)識符通常等于會話用戶標(biāo)識符,但是可能在 SECURITY DEFINER函數(shù)和類似機(jī)制的環(huán)境中臨時更改。 也可以用SET ROLE更改它。當(dāng)前用戶標(biāo)識符與 權(quán)限檢查相關(guān)。

會話用戶標(biāo)識符只能在初始會話用戶 已認(rèn)證用戶具有超級用戶特權(quán)時被更改。 否則,只有該命令指定已認(rèn)證用戶名時才會被接受。

SESSIONLOCAL修飾符發(fā)揮的作用和常規(guī) SET命令一樣。

DEFAULTRESET形式把會話用戶標(biāo)識符和 當(dāng)前用戶標(biāo)識符重置為初始的已認(rèn)證用戶名。這些形式可以由任何用戶執(zhí)行。

注解

SET SESSION AUTHORIZATION不能在一個 SECURITY DEFINER函數(shù)中使用。

示例

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 標(biāo)準(zhǔn)允許一些其他表達(dá)式出現(xiàn)在文本 user_name的位置上,但是實際上這些 選項并不重要。PostgreSQL允許標(biāo) 識符語法("username "),而 SQL 標(biāo)準(zhǔn)不允許。 SQL 不允許在事務(wù)中使用這個命令,而 PostgreSQL并不做此限 制,因為并沒有原因需要這樣做。和RESET語法 一樣,SESSIONLOCAL修飾符是一種 PostgreSQL擴(kuò)展。

標(biāo)準(zhǔn)把執(zhí)行這個命令所需的特權(quán)留給實現(xiàn)定義。

另見

SET ROLE


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號