在当前会话下,激活当前用户拥有权限的角色。该命令从 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: 查看当前用户拥有的角色。
- DROP ROLE: 删除角色。