SET DEFAULT ROLE
{NONE | ALL | role [, role ] ...}
TO user [, user ] ...
對於緊接在 TO
關鍵字之後的每個使用者
,此陳述式會定義使用者連線到伺服器並進行驗證時,或使用者在會話期間執行 SET ROLE DEFAULT
陳述式時,會啟用的角色。
SET DEFAULT ROLE
是 ALTER USER ... DEFAULT ROLE
的替代語法 (請參閱第 15.7.1.1 節,「ALTER USER Statement」)。然而,ALTER USER
只能為單一使用者設定預設角色,而 SET DEFAULT ROLE
可以為多個使用者設定預設角色。另一方面,您可以在 ALTER USER
陳述式中指定 CURRENT_USER
作為使用者名稱,但在 SET DEFAULT ROLE
中則不能。
SET DEFAULT ROLE
需要以下權限
為其他使用者設定預設角色需要全域
CREATE USER
權限,或是mysql.default_roles
系統資料表的UPDATE
權限。為自己設定預設角色不需要任何特殊權限,只要您想要作為預設值的角色已授予給您即可。
每個角色名稱都使用第 8.2.5 節,「指定角色名稱」中描述的格式。例如
SET DEFAULT ROLE 'admin', 'developer' TO 'joe'@'10.0.0.1';
如果省略角色名稱的主機名稱部分,則預設為 '%'
。
在 DEFAULT ROLE
關鍵字後面的子句允許以下值
NONE
:將預設值設為NONE
(沒有角色)。ALL
:將預設值設為授予給該帳戶的所有角色。
:將預設值設為指定的角色,這些角色必須存在,並且在執行role
[,role
] ...SET DEFAULT ROLE
時已授予給該帳戶。
SET DEFAULT ROLE
和 SET ROLE DEFAULT
是不同的陳述式
SET DEFAULT ROLE
定義在帳戶會話中預設啟用的帳戶角色。SET ROLE DEFAULT
將目前會話中的啟用角色設定為目前帳戶的預設角色。
有關角色使用範例,請參閱第 8.2.10 節,「使用角色」。