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 给用户:-
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 给用户:-
GRANT 'TestRole_ReadOnly' TO CURRENT_USER;
以下查询将上面创建的角色"TestRole_ReadOnly"设置为上面创建用户的默认角色:-
SET DEFAULT ROLE 'TestRole_ReadOnly' TO 'root'@'localhost';
现在,您可以激活默认角色 -
SET ROLE DEFAULT;
NONE 和 ALL 角色说明符
如果将 active role 设置为 none,则授予当前用户的所有角色都将被停用。以下语句将 active role 设置为 none -
SET ROLE NONE;
如果将 active role 设置为 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';