跳到主要内容

SET SECONDARY ROLES

激活当前会话的所有次要角色。这意味着用户被授予的所有次要角色都将处于活动状态,扩展用户的权限。有关活动角色和次要角色的更多信息,请参阅活动角色与次要角色

另请参阅:SET ROLE

语法

SET SECONDARY ROLES { ALL | NONE }
参数默认值描述
ALL激活用户在当前会话中被授予的所有次要角色,除了活动角色之外。这使得用户能够利用所有次要角色关联的权限。
NONE停用当前会话的所有次要角色,意味着只有活动角色的权限处于活动状态。这将用户的权限限制为仅由活动角色授予的权限。

示例

此示例展示了次要角色如何工作以及如何激活/停用它们。

  1. 以用户 root 创建角色。

首先,让我们创建两个角色,adminanalyst

CREATE ROLE admin;

CREATE ROLE analyst;
  1. 授予权限。

接下来,让我们为每个角色授予一些权限。例如,我们将授予 admin 角色创建数据库的能力,以及 analyst 角色从表中选择的能力:

GRANT CREATE DATABASE ON *.* TO ROLE admin;

GRANT SELECT ON *.* TO ROLE analyst;
  1. 创建用户。

现在,让我们创建一个用户:

CREATE USER 'user1' IDENTIFIED BY 'password';
  1. 分配角色。

将两个角色分配给用户:

GRANT ROLE admin TO 'user1';

GRANT ROLE analyst TO 'user1';
  1. 设置活动角色。

现在,让我们以 user1 身份登录 Databend,并将活动角色设置为 analyst

SET ROLE analyst;

所有次要角色默认情况下都是激活的,因此我们可以创建一个新的数据库:

CREATE DATABASE my_db;
  1. 停用次要角色。

活动角色 analyst 没有 CREATE DATABASE 权限。当所有次要角色被停用时,创建新数据库将失败。

SET SECONDARY ROLES NONE;

CREATE DATABASE my_db2;
error: APIError: ResponseError with 1063: Permission denied: privilege [CreateDatabase] is required on *.* for user 'user1'@'%' with roles [analyst,public]
开始使用 Databend Cloud
低成本
快速分析
多种数据源
弹性扩展
注册