SET SECONDARY ROLES
为当前会话激活所有次要角色。这意味着授予用户的所有次要角色都将处于激活状态,从而扩展用户的权限。有关活动角色和次要角色的更多信息,请参阅 活动角色和次要角色。
另请参阅:SET ROLE
语法
SET SECONDARY ROLES { ALL | NONE }
示例
本示例展示了次要角色如何工作,以及如何激活/停用它们。
以用户 root 创建角色。
首先,创建两个角色:
admin和analyst:CREATE ROLE admin; CREATE ROLE analyst;授予权限。
接下来,为每个角色授予一些权限。例如,为
admin角色授予创建数据库的能力,为analyst角色授予从表中查询数据的能力:GRANT CREATE DATABASE ON *.* TO ROLE admin; GRANT SELECT ON *.* TO ROLE analyst;创建用户。
现在,创建一个用户:
CREATE USER 'user1' IDENTIFIED BY 'password';分配角色。
将这两个角色都分配给该用户:
GRANT ROLE admin TO 'user1'; GRANT ROLE analyst TO 'user1';设置活动角色。
现在,以
user1身份登录到 TiDB Cloud Lake,然后将活动角色设置为analyst。SET ROLE analyst;默认情况下,所有次要角色都会被激活,因此我们可以创建一个新数据库:
CREATE DATABASE my_db;停用次要角色。
活动角色 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]