SET ROLE
功能
在当前会话下,激活当前用户拥有权限的角色。激活后,用户可以使用该角色 进行相关操作。
您可以使用 select is_role_in_session("<role_name>")
来检查指定角色在当前会话下是否已经被激活。
该命令从 3.0 版本开始支持。
注意事项
-
用户只能激活自己已有权限的角色。
-
用户可以通过 SHOW GRANTS 查看拥有的角色,可以通过SELECT CURRENT_ROLE 查看当前激活的角色。
语法
-- 激活特定角色,使用这个角色进行操作。
SET ROLE <role_name>[,<role_name>,..];
-- 激活除指定角色之外,用户拥有的所有角色。
SET ROLE ALL EXCEPT <role_name>[,<role_name>,..];
-- 激活用户拥有的所有角色。
SET ROLE ALL;
参数说明
role_name
: 用户拥有的角色名。
示例
-
查看当前用户拥有的角色。
SHOW GRANTS;
+--------------+---------+----------------------------------------------+
| UserIdentity | Catalog | Grants |
+--------------+---------+----------------------------------------------+
| 'test'@'%' | NULL | GRANT 'db_admin', 'user_admin' TO 'test'@'%' |
+--------------+---------+----------------------------------------------+ -
激活
db_admin
角色。SET ROLE db_admin;
-
查看当前生效的角色。
SELECT CURRENT_ROLE();
+--------------------+
| CURRENT_ROLE() |
+--------------------+
| db_admin |
+--------------------+
相关文档
- CREATE ROLE: 创建角色。
- GRANT: 将角色分配给用户或其他角色。
- ALTER USER: 修改角色。
- SHOW ROLES: 查看当前系统所有角色。
- current_role: 查看当前用户拥有的角色。
- is_role_in_session
- DROP ROLE: 删除角色。