文件首頁
MySQL 8.4 參考手冊
相關文件 下載本手冊
PDF (US Ltr) - 39.9Mb
PDF (A4) - 40.0Mb
Man Pages (TGZ) - 258.5Kb
Man Pages (Zip) - 365.5Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


15.7.1.11 SET ROLE 陳述式

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 ROLESET ROLE DEFAULT 是不同的陳述式。

  • SET DEFAULT ROLE 定義在帳戶工作階段中預設啟用哪些帳戶角色。

  • SET ROLE DEFAULT 將目前工作階段中的啟用角色設定為目前帳戶的預設角色。

有關角色使用範例,請參閱第 8.2.10 節「使用角色」