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';
广告

© . All rights reserved.