SET ROLE {
DEFAULT
| NONE
| ALL
| ALL EXCEPT role [, role ] ...
| role [, role ] ...
}
SET ROLE
透過指定哪些已授與的角色為啟用狀態,來修改目前使用者在目前工作階段中的有效權限。已授與的角色包括明確授與使用者的角色,以及在 mandatory_roles
系統變數值中指定的角色。
範例
SET ROLE DEFAULT;
SET ROLE 'role1', 'role2';
SET ROLE ALL;
SET ROLE ALL EXCEPT 'role1', 'role2';
每個角色名稱都使用第 8.2.5 節「指定角色名稱」中所述的格式。如果省略角色名稱的主機名稱部分,則預設為 '%'
。
使用者直接(而不是透過角色)被授予的權限不會因啟用角色的變更而受到影響。
此陳述式允許使用以下的角色指定器:
DEFAULT
:啟用帳戶的預設角色。預設角色是使用SET DEFAULT ROLE
指定的角色。當使用者連線到伺服器並成功驗證時,伺服器會決定要啟用哪些角色作為預設角色。如果啟用
activate_all_roles_on_login
系統變數,則伺服器會啟用所有已授與的角色。否則,伺服器會隱式執行SET ROLE DEFAULT
。伺服器只會啟用可以啟用的預設角色。伺服器會將無法啟用的預設角色的警告寫入其錯誤記錄檔,但用戶端不會收到警告。如果使用者在工作階段期間執行
SET ROLE DEFAULT
,則如果任何預設角色無法啟用(例如,如果該角色不存在或未授與使用者),則會發生錯誤。在這種情況下,目前啟用的角色不會變更。NONE
:將啟用角色設定為NONE
(無啟用角色)。ALL
:啟用授與該帳戶的所有角色。ALL EXCEPT
:啟用授與該帳戶的所有角色,但排除指定的角色。指定的角色不需要存在或已授與該帳戶。role
[,role
] ...
:啟用指定的角色,這些角色必須已授與該帳戶。role
[,role
] ...
SET DEFAULT ROLE
和 SET ROLE DEFAULT
是不同的陳述式。
SET DEFAULT ROLE
定義在帳戶工作階段中預設啟用哪些帳戶角色。SET ROLE DEFAULT
將目前工作階段中的啟用角色設定為目前帳戶的預設角色。
有關角色使用範例,請參閱第 8.2.10 節「使用角色」。