MySQL - SET ROLE 語句



MySQL SET ROLE 語句

角色是一組命名的許可權,您可以使用 SET ROLE 語句指定當前 MySQL 使用者授予的角色中活動的角色。

語法

以下是 MySQL SET ROLE 語句的語法:

SET ROLE {
   DEFAULT
   | NONE
   | ALL
   | ALL EXCEPT role_name1, role_name2, role_name3 . . . . .
   | role_name1, role_name2, role_name3 . . . . .
}

您可以只指定要啟用的角色。如果要啟用多個角色,請用逗號分隔它們。

示例

假設我們使用 CREATE 語句建立了一個角色,如下所示:

CREATE ROLE 'TestRole';

現在,讓我們使用 GRANT 語句向建立的角色授予只讀許可權,如下所示:

GRANT SELECT ON * . * TO 'TestRole';

然後,您可以按如下方式向用戶授予建立的角色:

GRANT 'TestRole' TO CURRENT_USER;

以下查詢啟用“TestRole”角色:

SET ROLE 'TestRole';

您可以使用此語句中的不同角色說明符,下面將討論這些說明符:

SET ROLE DEFAULT 語句

您可以使用 SET DEFAULT ROLE 語句將角色設定為預設角色。如果您將任何角色設定為特定 MYSQL 使用者的預設角色,那麼您很快就會以該使用者身份連線到伺服器,並且設定為預設的角色將分配給該使用者。在會話期間,如果您執行 SET ROLE DEFAULT 語句,則預設角色將設定為當前使用者。

您可以使用 **SET ROLE DEFAULT 語句** 啟用所有標記為預設的角色。

示例

假設我們使用 CREATE 語句建立了一個角色,如下所示:

CREATE ROLE 'TestRole_ReadOnly';

現在,讓我們使用 GRANT 語句向建立的角色授予只讀許可權,如下所示:

GRANT SELECT ON * . * TO 'TestRole_ReadOnly';

然後,您可以按如下方式向用戶授予建立的角色:

GRANT 'TestRole_ReadOnly' TO CURRENT_USER;

以下查詢將上面建立的角色“TestRole_ReadOnly”設定為上面建立使用者的預設角色:

SET DEFAULT ROLE 'TestRole_ReadOnly' TO 'root'@'localhost';

現在,您可以啟用預設角色,如下所示:

SET ROLE DEFAULT;

NONE 和 ALL 角色說明符

如果您將活動角色設定為 none,則當前使用者授予的所有角色都將停用。以下語句將活動角色設定為 none:

SET ROLE NONE;

如果您將活動角色設定為 ALL,則當前使用者授予的所有角色都將啟用。以下語句啟用當前使用者授予的所有角色:

SET ROLE ALL;

ALL Except 說明符

您可以使用此說明符僅啟用選定的角色。您需要指定應停用的角色,並用逗號分隔。

示例

假設我們建立了多個角色,如下所示:

CREATE ROLE 'MyAdmin', 'MyDeveloper', 'demouser';

讓我們向這些使用者授予許可權:

GRANT ALL ON * . * TO 'MyAdmin';
GRANT INSERT, UPDATE ON * . * TO 'MyDeveloper';
GRANT SELECT ON * . * TO 'demouser';

以下查詢啟用除“MyAdmin”之外的所有角色:

SET ROLE ALL EXCEPT 'MyAdmin';
廣告