ClickHouse中的remote权限
ClickHouse中的remote权限
REMOTE权限属于SOURCES权限之一,何为SOURCES,即数据源。
允许在 table engines 和 table functions中使用外部数据源。
SOURCES
. 级别:GROUP
FILE
. 级别:GLOBAL
URL
. 级别:GLOBAL
REMOTE
. 级别:GLOBAL
YSQL
. 级别:GLOBAL
ODBC
. 级别:GLOBAL
JDBC
. 级别:GLOBAL
HDFS
. 级别:GLOBAL
S3
. 级别:GLOBAL
SOURCES
权限允许使用所有数据源。当然也可以单独对每个数据源进行授权。要使用数据源时,还需要额外的权限。
示例:
- 创建 MySQL table engine, 需要
CREATE TABLE (ON db.table_name)
和MYSQL
权限。4 - 要使用 mysql table function,需要
CREATE TEMPORARY TABLE
和MYSQL
权限
在创建分布式表时,由于分布式表引用了其他节点的本地表,相当于使用了外部数据源,若是缺少REMOTE(或者更高级别的RESOURCE权限),则会提示权限不足。
如下:
CK01 :) --本地表可以创建成功 CREATE TABLE zkm.zkm_local ON CLUSTER ceb_cluster ( `id` String DEFAULT 'NULL' COMMENT '用户编号', `repo` String DEFAULT 'NULL' COMMENT '仓库编号' ) ENGINE = ReplicatedMergeTree('/clickhouse/tables/zkm-{shard}/zkm/zkm_local', '{replica}') ORDER BY id; ...省略部分内容... Query id: e264ccc5-ffc1-4843-9e6d-2c829aa19b7f ┌─host──────┬─port─┬─status─┬─error─┬─num_hosts_remaining─┬─num_hosts_active─┐ │ dev-app78 │ 9000 │ 0 │ │ 3 │ 3 │ └───────────┴──────┴────────┴───────┴─────────────────────┴──────────────────┘ ┌─host──────┬─port─┬─status─┬─error─┬─num_hosts_remaining─┬─num_hosts_active─┐ │ dev-app76 │ 9000 │ 0 │ │ 2 │ 0 │ │ dev-app77 │ 9000 │ 0 │ │ 1 │ 0 │ │ dev-app79 │ 9000 │ 0 │ │ 0 │ 0 │ └───────────┴──────┴────────┴───────┴─────────────────────┴──────────────────┘ 4 rows in set. Elapsed: 0.170 sec. CK01 :) --分布式表无法创建成功 CREATE TABLE zkm.zkm ON CLUSTER ceb_cluster ( `id` String DEFAULT 'NULL' COMMENT '用户编号', `repo` String DEFAULT 'NULL' COMMENT '仓库编号' ) ENGINE = Distributed('ceb_cluster', 'zkm', 'zkm_local', rand()); ...省略部分内容... Query id: 261136e3-bc62-46d5-9130-83afd71fab8d 0 rows in set. Elapsed: 0.002 sec. Received exception from server (version 22.3.2): Code: 497. DB::Exception: Received from localhost:9000. DB::Exception: zkm: Not enough privileges. To execute this query it's necessary to have grant REMOTE ON *.*. (ACCESS_DENIED)
授权remote权限:
CK01 :) grant REMOTE ON *.* to zkm on cluster ceb_cluster; GRANT ON CLUSTER ceb_cluster REMOTE ON *.* TO zkm Query id: 66d3923e-8338-49f5-af37-9cc34c09c745 ┌─host──────┬─port─┬─status─┬─error─┬─num_hosts_remaining─┬─num_hosts_active─┐ │ dev-app78 │ 9000 │ 0 │ │ 3 │ 0 │ │ dev-app76 │ 9000 │ 0 │ │ 2 │ 0 │ │ dev-app77 │ 9000 │ 0 │ │ 1 │ 0 │ │ dev-app79 │ 9000 │ 0 │ │ 0 │ 0 │ └───────────┴──────┴────────┴───────┴─────────────────────┴──────────────────┘ 4 rows in set. Elapsed: 0.119 sec.
再次创建分布式表可以成功了。
CK01 :) CREATE TABLE zkm.zkm ON CLUSTER ceb_cluster ( `id` String DEFAULT 'NULL' COMMENT '用户编号', `repo` String DEFAULT 'NULL' COMMENT '仓库编号' ) ENGINE = Distributed('ceb_cluster', 'zkm', 'zkm_local', rand()); CREATE TABLE zkm.zkm ON CLUSTER ceb_cluster ( `id` String DEFAULT 'NULL' COMMENT '用户编号', `repo` String DEFAULT 'NULL' COMMENT '仓库编号' ) ENGINE = Distributed('ceb_cluster', 'zkm', 'zkm_local', rand()) Query id: 7ff7b59d-0968-40ce-ba58-8b4b999411d5 ┌─host──────┬─port─┬─status─┬─error─┬─num_hosts_remaining─┬─num_hosts_active─┐ │ dev-app78 │ 9000 │ 0 │ │ 3 │ 0 │ │ dev-app76 │ 9000 │ 0 │ │ 2 │ 0 │ │ dev-app77 │ 9000 │ 0 │ │ 1 │ 0 │ │ dev-app79 │ 9000 │ 0 │ │ 0 │ 0 │ └───────────┴──────┴────────┴───────┴─────────────────────┴──────────────────┘ 4 rows in set. Elapsed: 0.125 sec.
也可以授权更高级别的sources。
grant sources ON *.* to zkm on cluster ceb_cluster;