Scroll to navigation

SET SESSION AUTHORIZATION(7) SQL Commands SET SESSION AUTHORIZATION(7)

NAME

SET SESSION AUTHORIZATION - 為當前會話設置會話使用者標識符和當前使用者標識符
 

SYNOPSIS

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

DESCRIPTION 描述


這條命令把當前 SQL 會話環境裏的會話使用者標識和當前使用者標識設置為 username。 這個使用者名可以寫成一個標識符或者一個字串文本。 使用這個命令,我們可以臨時變成一個非特權使用者,稍後再切換回超級使用者。

會話使用者標識符一開始設置為(可能經過認証的)客戶端提供的使用者名。 當前使用者標識符通常等於會話使用者標識符, 但是可能在 "setuid" 的環境裏或者類似的機制裏臨時改變。 當前使用者標識符和權限檢查相關。

只有在初始會話使用者( 認証了的使用者)有超級使用者權限的時候,會話使用者標識符才能改變。 否則,只有在指定了被認証的使用者名的情況下,系統才接受該命令。
SESSION 和 LOCAL 修飾詞和普通 SET [ set(7)] 命令裏的作用相同。
DEFAULT 和 RESET 形式重置會話和當前使用者標識符為初始認証的使用者名。這些形式可以為任何使用者執行。

EXAMPLES 例子

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
 

COMPATIBILITY 相容性


SQL 標準允許一些其它的表達式出現在文本 username 的位置上,不過這個東西實際上並不重要。 PostgreSQL 允許標識符語法 ("username"),而 SQL 不允許。 SQL 不允許在一個事務的過程中用這條命令; PostgreSQL 沒有這個限制,因為沒有什麼理由不允許這樣用。 標準中表示執行這條命令的權限要求是具體實現定義的。

譯者

Postgresql 中文網站 何偉平 <laser@pgsqldb.org>
2003-11-02 SQL - Language Statements