资讯详情

【ClickHouse SQL 极简教程】ClickHouse SQL 之数据控制语言 DCL

97e1b2dc05adb9da9144f9f6e317fc58.png

1.1.

语言的数据控制( DCL ) 它是一种类似于计算机编程语言的语法,用于控制存储在数据库中的数据访问(授权)。特别是,它是一种结构化的查询语言(SQL) 的一个组件。语言的数据控制是 SQL 命令中的逻辑组之一。DCL 命令的示例包括:

1. GRANT允许指定用户执行指定任务。

2. REVOKE删除用户对数据库对象的可访问性。

ClickHouse 支持基于 RBAC(Role-Based Access Control) 的访问权限控制。本节主要介绍 ClickHouse 查询配额的权限管理和配置包括:用户管理、角色管理、战略管理和资源配额管理。

1.1.1.

ClickHouse 访问权限模型中的实体有:

1.用户帐户(User Account):用户账户是权限作用的实体,可以设置独立的密码和操作范围,DBA通过登陆不同的账户来行使不同的数据权限。

2.角色(Role):角色是权限的集合,用于定义用户行使权限的范围。

3.行策略(Row Policy):根据过滤条件创建银行策略,限制用户从表中读取哪些银行数据。

4.用户配置(Settings Profile)

a)可以在users.xml在用户配置节点中设置用户配置节点<clickhouse><profiles></profiles></clickhouse>,定义多组profile,并为每组profile限制资源的使用,定义不同的配置项,例如,限制一次查询的资源消耗(max_memory_usage)、限制单个用户使用的最大内存用量(max_memory_usage_for_user)等。

b)多个profile配置可重用。

c)修改了users.xml参数立即生效。

5.配额(Quota):配额,限制资源使用。配置时间间隔(interval),限制一定时间内的资源消耗。例如,配置时间周期(duration)内允许的请求总数(queries)、错误总数(errors)、允许返回的行数(result_rows)、读取的数据行数(read_rows)、允许执行的查询时间(execution_time)等。属性值为0,表示无限制。

可以通过 SQL 终端配置(CREATE/ALTER/DROP USER|ROLE|ROW POLICY| QUOTA等)或通过users.xml与config.xml设置配置文件(但同一访问实体不能通过两种配置方法同时管理)。例如,执行SHOW GRANTS查看用户授予的权限:

GRANT SHOW, SELECT, INSERT, ALTER, CREATE, DROP, TRUNCATE, OPTIMIZE, KILL QUERY, MOVE PARTITION BETWEEN SHARDS, SYSTEM, dictGet, INTROSPECTION, SOURCES ON *.* TO default

此时,我们无权查询系统用户信息:

SELECT *

FROM system.users

Query id: 037bf01e-bcc4-4dcf-b293-c82cdee7e763

0 rows in set. Elapsed: 0.001 sec.

Received exception from server (version 22.4.1):

Code: 497. DB::Exception: Received from 127.0.0.1:9009. DB::Exception: default: Not enough privileges. To execute this query it's necessary to have grant SHOW USERS ON *.*. (ACCESS_DENIED)

我们需要打开它 default 用户管理员的权限使 default用户可以创建其他用户并授予他们权限。

管理员账户主要用于权限分配和管理。管理权限需要打开users.xml配置如下:

在users.xml中的<clickhouse><users><default></default></users></clickhouse>新位置一行配置:<access_management>1</access_management>,配置如下:

<users>

<default>

<!-- PASSWORD=$(base64 < /dev/urandom | head -c8); echo "$PASSWORD"; echo -n "$PASSWORD" | sha256sum | tr -d '-' -->

<!-- password 7Dv7Ib0g -->

<password_sha256_hex>0c9858b4a1fb6c66d637e6b3a5e0977912c22a9d2f77e007ef7594226af409f5</password_sha256_hex>

<networks>

<ip>::/0</ip>

</networks>

<profile>default</profile>

<quota>default</quota>

<!-- User can create other users and grant rights to them. -->

</default>

...

</users>

access_management 默认为0,设置为1,标识开启管理员权限。在这个时候,我们不需要重启 ClickHouseServer,ClickHouse 监控配置文件的变更,ConfigReloader最新配置将自动加载。 我们修改完users.xml配置之后,ClickHouse 配置自动加载Server 端日志如下:

2022.03.25 18:20:03.930643 [ 3362581 ] {} <Debug> ConfigReloader: Loading config 'users.xml'

Processing configuration file 'users.xml'.

Saved preprocessed configuration to '/Users/data/clickhouse/preprocessed_configs/users.xml'.

2022.03.25 18:20:03.932980 [ 3362581 ] {} <Debug> ConfigReloader: Loaded config 'users.xml', performing update on configuration/p>

标签: dcl光伏电抗器三相功率电感器

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台