跳到主要内容
版本:latest

数据控制语言

是用来控制数据库用户访问权限。

只有拥有系统权限的用户才能添加用户和租户。

只有担任租户下 owner 角色的用户或拥有系统权限的用户才能添加租户下的角色,并赋予用户角色。

CREATE TENANT

CREATE TENANT 用于在 CnosDB 中创建一个新的租户。CnosDB 允许单个实例同时为多个客户(即租户)提供服务,每个客户都被视为一个独立的租户。

CREATE TENANT [IF NOT EXISTS] tenant_name
[WITH [comment = <comment>],
[drop_after = <duration>],
[object_config = <
max_users_number = <integer>,
max_databases = <integer>,
max_shard_number = <integer>,
max_replicate_number = <integer>,
max_retention_time = <integer>
>],
[coord_data_in = <
remote_max = <integer>,
remote_initial = <integer>,
remote_refill = <integer>,
remote_interval = <integer>,
local_max = <integer>,
local_initial = <integer>
>],
[coord_data_out = < ... >],
[coord_queries = < ... >],
[coord_writes = < ... >],
[http_data_in = < ... >],
[http_data_out = < ... >],
[http_queries = < ... >],
[http_writes = < ... >]
];
选项描述
comment对租户的描述性备注,字符串格式。
drop_after删除租户延迟时间,默认立即删除,支持:d , h, m,当不带单位时,默认为 d
object_config租户的对象配置,包括最大用户数、最大数据库数等资源限制。
coord_data_in租户的协调层数据输入配置,包括 remote 和 local 两种资源限制设置。
coord_data_out租户的协调层数据输入配置,包括 remote 和 local 两种资源限制设置。
coord_queries租户的协调层数据输入配置,包括 remote 和 local 两种资源限制设置。
coord_writes租户的协调层数据输入配置,包括 remote 和 local 两种资源限制设置。
http_data_in租户的 HTTP 层数据输入配置,支持 remote 和 local 限制。
http_data_out租户的 HTTP 层数据输入配置,支持 remote 和 local 限制。
http_queries租户的 HTTP 层数据输入配置,支持 remote 和 local 限制。
http_writes租户的 HTTP 层数据输入配置,支持 remote 和 local 限制。

其他相关内容请参考 租户资源

查看示例
create tenant t_create with comment 'create and alter tenant', drop_after ='1d',
object_config max_users_number = 1
max_databases = 3
max_shard_number = 2
max_replicate_number = 2
max_retention_time = 30,
coord_data_in remote_max = 10000
remote_initial = 0
remote_refill = 10000
remote_interval = 100
local_max = 10000
local_initial = 0,
coord_data_out remote_max = 10000
remote_initial = 0
remote_refill = 10000
remote_interval = 100
local_max = 10000
local_initial = 0,
coord_queries remote_max = 10000
remote_initial = 0
remote_refill = 10000
remote_interval = 100
local_max = 10000
local_initial = 0,
coord_writes remote_max = 10000
remote_initial = 0
remote_refill = 10000
remote_interval = 100
local_max = 10000
local_initial = 0,
http_data_in remote_max = 10000
remote_initial = 0
remote_refill = 10000
remote_interval = 100
local_max = 10000
local_initial = 0,
http_data_out remote_max = 10000
remote_initial = 0
remote_refill = 10000
remote_interval = 100
local_max = 10000
local_initial = 0,
http_queries remote_max = 10000
remote_initial = 0
remote_refill = 10000
remote_interval = 100
local_max = 10000
local_initial = 0,
http_writes remote_max = 10000
remote_initial = 0
remote_refill = 10000
remote_interval = 100
local_max = 10000
local_initial = 0;

CREATE USER

CREATE USER 用于创建新用户。

通过使用 CREATE USER 语句,管理员可以在 CnosDB 中创建新用户,并为其分配相应的权限和角色。新用户可以用于访问数据库、执行查询、更新数据等操作,具体权限取决于管理员为用户分配的权限级别。

CREATE USER [IF NOT EXISTS] user_name
[WITH [PASSWORD='',]
[MUST_CHANGE_PASSWORD=true,]
[RSA_PUBLIC_KEY='']
[GRANTED_ADMIN=true,] [COMMENT = '']];
选项描述
MUST_CHANGE_PASSWORD第一次登录时是否需要更改密码,默认为 false
GRANTED_ADMIN用户是否为 admin 用户,admin 用于整个实例的所有权限。
RSA_PUBLIC_KEY上传用户 RSA 算法的公钥,用于登录验证。
查看示例
CREATE USER IF NOT EXISTS tester WITH PASSWORD='xxx', MUST_CHANGE_PASSWORD=true, COMMENT = 'test';

CREATE ROLE

CREATE ROLE 用于创建新角色。

通过使用 CREATE ROLE 语句,管理员可以定义新的角色,并为这些角色分配相应的权限。角色在数据库中可以用于组织用户并授予一组特定的权限,从而简化权限管理和控制访问级别。

CREATE ROLE [IF NOT EXISTS] role_name [INHERIT {owner | member}];
选项描述
owner租户下默认的角色,创建新角色时可以继承 ownermember
member租户下默认的角色,创建新角色时可以继承 ownermember
查看示例
CREATE ROLE owner_role INHERIT owner;

ALTER TENANT

ALTER TENANT 用于修改租户(tenant)的属性或配置。

通过 ALTER TENANT 命令,可以对租户的属性进行修改,例如更改租户的配置、调整资源限制等。

ALTER TENANT tenant_name 
{ SET sql_option
| UNSET option_name
| ADD USER user_name AS {owner | member}
| REMOVE USER user_name
| SET USER user_name AS {owner | member} };

sql_option: option_name = value
option: {COMMENT/DROP_AFTER/_LIMITER}
选项描述
SET sql_option为租户添加或修改属性。
UNSET option_name撤销租户内的配置或属性。
ADD USER user_name AS {owner \| member}向租户中添加指定角色的成员。
REMOVE USER user_name从租户中移除指定成员。
SET USER user_name AS {owner \| member}重设租户中指定成员的角色。
查看示例
ALTER TENANT test SET COMMENT = 'abc';

ALTER USER

ALTER USER 用于修改现有用户的语句。

通过使用 ALTER USER 语句,管理员可以更改用户的属性、权限和配置。这包括修改用户的密码、更改用户的角色、调整用户的权限等操作。

ALTER USER user_name {SET sql_option};

sql_option: option_name = option_value
option_name: {COMMENT | MUST_CHANGE_PASSWORD | PASSWORD | RSA_PUBLIC_KEY}
选项描述
SET为租户添加或修改属性。
查看示例
ALTER USER tester SET PASSWORD = 'aaa';

DROP TENANT

DROP TENANT 用于删除租户(tenant)及其相关的数据和配置。

通过 DROP TENANT 命令,可以删除特定的租户,包括该租户拥有的所有数据、配置、用户等内容。

在执行 DROP TENANT 操作之前,通常需要谨慎考虑,因为该操作将永久删除租户及其所有相关数据。

DROP TENANT tenant_name [AFTER duration];
选项描述
ALTER删除租户延迟时间,默认立即删除,支持:d , h, m,当不带单位时,默认为 d,删除期间租户会被禁用,ALTER 的优先级高于 CREATE TANANT 中的 DROP_AFTER
查看示例
DROP TENANT test AFTER '7d';

DROP USER

DROP USER 用于删除现有用户。

通过使用 DROP USER 语句,数据库管理员可以永久删除数据库中的特定用户,包括用户的登录凭证、权限和配置信息。

DROP USER [IF EXISTS] user_name;
查看示例
DROP USER IF EXISTS tester;

DROP ROLE

DROP ROLE 用于删除现有角色。

通过使用 DROP ROLE 语句,管理员可以永久删除数据库中的特定角色,包括该角色所拥有的权限和配置信息。删除角色时,角色分配给用户的权限可能会被撤销。

提示

当删除角色时,对应角色的租户成员的权限会被同时撤销。 然而,租户成员和其角色之间的绑定关系不会同步删除(即仅角色会失效)。

DROP ROLE role_name;
查看示例
DROP USER IF EXISTS tester;

GRANT

GRANT 用于授予用户或角色权限。

通过使用 GRANT 命令,数据库管理员可以向用户或角色授予特定的权限,这样可以控制用户或角色对数据库对象的访问和操作权限。

权限支持的粒度如下

选项描述
READ对数据库读的权限。
WRITE对数据库读写的权限。
ALL对数据库读写和DDL操作的权限。
GRANT {READ | WRITE | ALL} ON DATABASE database_name TO ROLE role_name;
查看示例

创建一个名为 rrr 的角色。

CREATE ROLE rrr INHERIT member;

授予角色 rrr 读取数据库 air 的权限。

GRANT READ ON DATABASE air TO ROLE rrr;

授予角色 rr r 读写数据库 wind 的权限。

GRANT WRITE ON DATABASE wind TO ROLE rrr;

授予角色 rrr 关于数据库 sea 的所有权限。

GRANT ALL ON DATABASE sea TO ROLE rrr;

REVOKE

REVOKE 在数据库管理系统中用于撤销用户或角色权限。

通过使用 REVOKE 命令,数据库管理员可以从用户或角色中撤销之前授予的权限,以限制其对数据库对象的访问或操作权限。REVOKE 命令通常与 GRANT 命令结合使用,用于管理和调整用户或角色的权限。

REVOKE {WRITE | READ | FULL} ON DATABASE database_name FROM role_name;
查看示例

撤销 rrr读取数据库 air 的权限。

REVOKE READ ON DATABASE air FROM rrr;