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 節「使用角色」。