clickhouse的SQL参考——(五)system、set和权限相关

参考资料

https://clickhouse.tech/docs/en/sql-reference/statements

版本:v20.11

 

目录

SYSTEM语句

RELOAD EMBEDDED DICTIONARIES

RELOAD DICTIONARIES

RELOAD DICTIONARY

DROP DNS CACHE

DROP MARK CACHE

DROP REPLICA

DROP UNCOMPRESSED CACHE

DROP COMPILED EXPRESSION CACHE

FLUSH LOGS

RELOAD CONFIG

SHUTDOWN

KILL

Managing Distributed Tables

STOP DISTRIBUTED SENDS

FLUSH DISTRIBUTED

START DISTRIBUTED SENDS

Managing MergeTree Tables

STOP MERGES

START MERGES

STOP TTL MERGES

START TTL MERGES

STOP MOVES

START MOVES

Managing ReplicatedMergeTree Tables

STOP FETCHES

START FETCHES

STOP REPLICATED SENDS

START REPLICATED SENDS

STOP REPLICATION QUEUES

START REPLICATION QUEUES

SYNC REPLICA

RESTART REPLICA

RESTART REPLICAS

GRANT语句

授予权限语法

分配角色语法

使用方法

权限

SELECT

INSERT

ALTER

CREATE

DROP

TRUNCATE

OPTIMIZE

SHOW

KILL QUERY

ACCESS MANAGEMENT

SYSTEM

INTROSPECTION

SOURCES

dictGet

ALL

NONE

ADMIN OPTION

REVOKE语句

语法

描述

部分撤销

举例

OPTIMIZE语句

SET语句

SET ROLE语句

SET DEFAULT ROLE

举例


 

SYSTEM语句

以下查询语句均以SYSTEM开头,格式为SYSTEM [相关语句]。

RELOAD EMBEDDED DICTIONARIES

重新加载所有内部词典(Internal dictionaries.)。

默认情况下,内部字典是禁用的。

始终返回OK, 无论内部字典更新的结果如何。

RELOAD DICTIONARIES

重新加载之前已成功加载的所有词典。

默认情况下,字典是延迟加载的(请参阅 dictionaries_lazy_load),因此,它们不是在启动时自动加载的,而是在第一次访问时通过dictGet函数或从ENGINE = Dictionary的表中使用SELECT查询时进行初始化的。 

SYSTEM RELOAD DICTIONARIES查询重新加载此类字典(LOADED)。

始终返回OK。 不管字典更新的结果如何。

RELOAD DICTIONARY

完全重载字典dictionary_name,而不管字典的状态如何(LOADED / NOT_LOADED / FAILED)。

始终返回OK。 不管字典更新的结果如何。

可以通过查询system.dictionaries表来检查字典的状态。

SELECT name, status FROM system.dictionaries;

DROP DNS CACHE

重置ClickHouse的内部DNS缓存。 有时(对于旧的ClickHouse版本),在更改基础结构(更改其他ClickHouse服务器或词典使用的服务器的IP地址)时,必须使用此命令。

有关更方便的(自动)缓存管理,请参阅disable_internal_dns_cache,dns_cache_update_period参数。

DROP MARK CACHE

重置标记缓存。 用于ClickHouse的开发和性能测试。

DROP REPLICA

可以使用以下语法删除死副本:

--删除database.table表的'replica_name'副本的元数据。
SYSTEM DROP REPLICA 'replica_name' FROM TABLE database.table;

--对数据库中所有复制的表执行相同的操作。
SYSTEM DROP REPLICA 'replica_name' FROM DATABASE database;

--对本地服务器上所有复制的表执行相同的操作。
SYSTEM DROP REPLICA 'replica_name';

--当删除表的所有其他副本时,可用于删除无效副本的元数据。 
--它要求显式指定表路径。 它必须与创建表时传递给ReplicatedMergeTree引擎的第一个参数的路径相同。
SYSTEM DROP REPLICA 'replica_name' FROM ZKPATH '/path/to/table/in/zk';

查询将删除ZooKeeper中的副本路径。 当副本已失效并且DROP TABLE无法将其元数据从ZooKeeper中删除时,这将非常有用,因为不再有此类表。 它只会删除不活动/过时的副本,而不能删除本地副本,请为此使用DROP TABLE。 DROP REPLICA不会删除任何表,也不会从磁盘上删除任何数据或元数据。

DROP UNCOMPRESSED CACHE

重置未压缩的数据缓存。 用于ClickHouse的开发和性能测试。

对于管理未压缩的数据高速缓存参数,请使用以下设置,服务器级别的设置uncompressed_cache_size,查询/用户/配置文件级别的设置use_uncompressed_cache

DROP COMPILED EXPRESSION CACHE

重置编译的表达式缓存。 用于ClickHouse的开发和性能测试。

当query/user/profile开启编译选项时,编译表达式缓存会被使用。

FLUSH LOGS

将日志消息的缓冲区刷新到系统表(例如system.query_log)。 允许您调试时不等待7.5秒。

即使消息队列为空,也会创建系统表。

RELOAD CONFIG

重新加载ClickHouse配置。 当配置存储在ZooKeeper中时使用。

SHUTDOWN

正常关闭clickhouse服务器。

类似于service clickhouse-server stop、kill {$pid_clickhouse-server}

KILL

中止ClickHouse进程(像是kill -9 {$ pid_clickhouse-server})

Managing Distributed Tables

ClickHouse可以管理分布式表。 当用户将数据插入这些表中时,ClickHouse首先创建应发送到集群节点的数据队列,然后异步发送。 

您可以使用STOP DISTRIBUTED SENDS,FLUSH DISTRIBUTED和START DISTRIBUTED SENDS查询来管理队列处理。

您还可以使用insert_distributed_sync设置同步插入分布式数据。

STOP DISTRIBUTED SENDS

将数据插入分布式表时,禁用后台数据分发。

SYSTEM STOP DISTRIBUTED SENDS [db.]<distributed_table_name>

FLUSH DISTRIBUTED

强制ClickHouse将数据同步发送到群集节点。

如果有节点不可用,ClickHouse会引发异常并停止查询执行。

在所有节点都重新联机后,您可以重试查询直到成功。

SYSTEM FLUSH DISTRIBUTED [db.]<distributed_table_name>

START DISTRIBUTED SENDS

将数据插入分布式表中时启用后台数据分发。

SYSTEM START DISTRIBUTED SENDS [db.]<distributed_table_name>

Managing MergeTree Tables

ClickHouse可以管理MergeTree表中的后台进程。

STOP MERGES

停止MergeTree系列中表的后台合并:

SYSTEM STOP MERGES [[db.]merge_tree_family_table_name]

即使之前已停止所有MergeTree表的合并,DETACH / ATTACH TABLE查询也会启动该表的后台合并。

START MERGES

启动MergeTree系列中表的后台合并:

SYSTEM START MERGES [[db.]merge_tree_family_table_name]

STOP TTL MERGES

根据TTL表达式,停止后台删除MergeTree系列表中的旧数据:

返回OK,即使表不存在或表没有使用MergeTree引擎。

数据库不存在时返回错误。

SYSTEM START TTL MERGES [[db.]merge_tree_family_table_name]

START TTL MERGES

根据TTL表达式,开始后台删除MergeTree系列表中的旧数据:

返回OK,即使表不存在或表没有使用MergeTree引擎。

数据库不存在时返回错误。

SYSTEM START TTL MERGES [[db.]merge_tree_family_table_name]

STOP MOVES

根据带有TO VOLUME或TO DISK子句的TTL表表达式,停止后台移动MergeTree系列表中的数据:

返回OK,即使表不存在或表没有使用MergeTree引擎。

数据库不存在时返回错误。

SYSTEM STOP MOVES [[db.]merge_tree_family_table_name]

START MOVES

根据带有TO VOLUME或TO DISK子句的TTL表表达式,开启后台移动MergeTree系列表中的数据:

返回OK,即使表不存在或表没有使用MergeTree引擎。

数据库不存在时返回错误。

SYSTEM STOP MOVES [[db.]merge_tree_family_table_name]

Managing ReplicatedMergeTree Tables

ClickHouse可以管理ReplicatedMergeTree表中的与后台复制相关的进程。

STOP FETCHES

停止对已经插入表中的数据的后台提取,用于ReplicatedMergeTree家族。

返回OK,即使表和数据库都不存在。

SYSTEM STOP FETCHES [[db.]replicated_merge_tree_family_table_name]

START FETCHES

开启对已经插入表中的数据的后台提取,用于ReplicatedMergeTree家族。

返回OK,即使表和数据库都不存在。

SYSTEM START FETCHES [[db.]replicated_merge_tree_family_table_name]

STOP REPLICATED SENDS

停止后台将插入到表中的新数据发送到群集中的其他副本,用于ReplicatedMergeTree家族。

SYSTEM STOP REPLICATED SENDS [[db.]replicated_merge_tree_family_table_name]

START REPLICATED SENDS

开启后台将插入到表中的新数据发送到群集中的其他副本,用于ReplicatedMergeTree家族。

SYSTEM START REPLICATED SENDS [[db.]replicated_merge_tree_family_table_name]

STOP REPLICATION QUEUES

停止从ZooKeeper集群中获取任务列表,用于ReplicatedMergeTree家族。

可能的后台任务类型:merges, fetches, mutation,带有 ON CLUSTER 的DDL语句。

SYSTEM STOP REPLICATION QUEUES [[db.]replicated_merge_tree_family_table_name]

START REPLICATION QUEUES

开启从ZooKeeper集群中获取任务列表,用于ReplicatedMergeTree家族。

可能的后台任务类型:merges, fetches, mutation,带有 ON CLUSTER 的DDL语句。

SYSTEM START REPLICATION QUEUES [[db.]replicated_merge_tree_family_table_name]

SYNC REPLICA

等待ReplicatedMergeTree表与集群中的其他副本同步。

如果当前未对该表进行提取操作,则将一直运行到receive_timeout。

SYSTEM SYNC REPLICA [db.]replicated_merge_tree_family_table_name

RESTART REPLICA

重新初始化ReplicatedMergeTree表的Zookeeper会话状态,会将当前状态与Zookeeper比较直到true,并在需要时将任务添加到Zookeeper队列中

 基于ZooKeeper日期的初始化复制队列与ATTACH TABLE语句的方式相同。短时间内该表将无法进行任何操作。

SYSTEM RESTART REPLICA [db.]replicated_merge_tree_family_table_name

RESTART REPLICAS

重新初始化所有ReplicatedMergeTree表的Zookeeper会话状态,会将当前状态与Zookeeper比较直到true,并在需要时将任务添加到Zookeeper队列中。

 

GRANT语句

向ClickHouse用户帐户或角色授予特权。将角色分配给用户帐户或其他角色。

要撤消特权,请使用REVOKE语句。 可以使用SHOW GRANTS语句列出授予的特权。

授予权限语法

GRANT [ON CLUSTER cluster_name] privilege[(column_name [,...])] [,...] ON {db.table|db.*|*.*|table|*} TO {user | role | CURRENT_USER} [,...] [WITH GRANT OPTION]
  • privilege — 权限类型
  • role — ClickHouse 用户角色
  • user — ClickHouse 用户账户

WITH GRANT OPTION子句向用户或角色授予执行GRANT查询的权限。 用户可以授予与他们相同或更少范围的特权。

分配角色语法

GRANT [ON CLUSTER cluster_name] role [,...] TO {user | another_role | CURRENT_USER} [,...] [WITH ADMIN OPTION]
  • role — ClickHouse用户角色。
  • user — ClickHouse用户账户。

WITH ADMIN OPTION子句向用户或角色授予ADMIN OPTION特权。

使用方法

要使用GRANT,您的帐户必须具有GRANT OPTION特权。 您只能在帐户权限范围内授予权限。

--管理员通过查询授予了john帐户特权
GRANT SELECT(x,y) ON db.table TO john WITH GRANT OPTION

这意味着john有权执行:

  • SELECT x,y FROM db.table.
  • SELECT x FROM db.table.
  • SELECT y FROM db.table.

john无法执行SELECT z FROM db.table.,SELECT * FROM db.table也不可用。在处理此查询时,ClickHouse不会返回任何数据,即使x和y也是如此。唯一的例外是如果表仅包含x和y列。在这种情况下,ClickHouse将返回所有数据。

john还具有GRANT OPTION特权,因此它可以向其他用户授予相同或较小范围的特权。

指定特权后,可以使用星号(*)代替表或数据库名称。例如,GRANT SELECT ON db.* TO john 允许join执行在db数据库全表上的SELECT查询。

另外,您可以省略数据库名称。 在这种情况下,将为当前数据库授予特权。 例如,GRANT SELECT ON * TO john授予当前数据库中所有表的SELECT特权,GRANT SELECT ON mytable TO john授予当前数据库中的mytable表的SELECT特权。

始终允许访问系统数据库(因为该数据库用于处理查询)。

您可以在一个查询中为多个帐户授予多个特权。例如,GRANT SELECT, INSERT ON *.* TO john, robin ,允许帐户john和robin对服务器上所有数据库中的所有表执行INSERT和SELECT查询。

权限

特权是执行特定类型查询的权限。

特权具有层次结构。 一组允许的查询取决于特权范围。

特权等级:

  • SELECT
  • INSERT
  • ALTER
    • ALTER TABLE
      • ALTER UPDATE
      • ALTER DELETE
      • ALTER COLUMN
        • ALTER ADD COLUMN
        • ALTER DROP COLUMN
        • ALTER MODIFY COLUMN
        • ALTER COMMENT COLUMN
        • ALTER CLEAR COLUMN
        • ALTER RENAME COLUMN
      • ALTER INDEX
        • ALTER ORDER BY
        • ALTER SAMPLE BY
        • ALTER ADD INDEX
        • ALTER DROP INDEX
        • ALTER MATERIALIZE INDEX
        • ALTER CLEAR INDEX
      • ALTER CONSTRAINT
        • ALTER ADD CONSTRAINT
        • ALTER DROP CONSTRAINT
      • ALTER TTL
      • ALTER MATERIALIZE TTL
      • ALTER SETTINGS
      • ALTER MOVE PARTITION
      • ALTER FETCH PARTITION
      • ALTER FREEZE PARTITION
    • ALTER VIEW
      • ALTER VIEW REFRESH
      • ALTER VIEW MODIFY QUERY
  • CREATE
    • CREATE DATABASE
    • CREATE TABLE
    • CREATE VIEW
    • CREATE DICTIONARY
    • CREATE TEMPORARY TABLE
  • DROP
    • DROP DATABASE
    • DROP TABLE
    • DROP VIEW
    • DROP DICTIONARY
  • TRUNCATE
  • OPTIMIZE
  • SHOW
    • SHOW DATABASES
    • SHOW TABLES
    • SHOW COLUMNS
    • SHOW DICTIONARIES
  • KILL QUERY
  • ACCESS MANAGEMENT
    • CREATE USER
    • ALTER USER
    • DROP USER
    • CREATE ROLE
    • ALTER ROLE
    • DROP ROLE
    • CREATE ROW POLICY
    • ALTER ROW POLICY
    • DROP ROW POLICY
    • CREATE QUOTA
    • ALTER QUOTA
    • DROP QUOTA
    • CREATE SETTINGS PROFILE
    • ALTER SETTINGS PROFILE
    • DROP SETTINGS PROFILE
    • SHOW ACCESS
      • SHOW_USERS
      • SHOW_ROLES
      • SHOW_ROW_POLICIES
      • SHOW_QUOTAS
      • SHOW_SETTINGS_PROFILES
    • ROLE ADMIN
  • SYSTEM
    • SYSTEM SHUTDOWN
    • SYSTEM DROP CACHE
      • SYSTEM DROP DNS CACHE
      • SYSTEM DROP MARK CACHE
      • SYSTEM DROP UNCOMPRESSED CACHE
    • SYSTEM RELOAD
      • SYSTEM RELOAD CONFIG
      • SYSTEM RELOAD DICTIONARY
      • SYSTEM RELOAD EMBEDDED DICTIONARIES
    • SYSTEM MERGES
    • SYSTEM TTL MERGES
    • SYSTEM FETCHES
    • SYSTEM MOVES
    • SYSTEM SENDS
      • SYSTEM DISTRIBUTED SENDS
      • SYSTEM REPLICATED SENDS
    • SYSTEM REPLICATION QUEUES
    • SYSTEM SYNC REPLICA
    • SYSTEM RESTART REPLICA
    • SYSTEM FLUSH
      • SYSTEM FLUSH DISTRIBUTED
      • SYSTEM FLUSH LOGS
  • INTROSPECTION
    • addressToLine
    • addressToSymbol
    • demangle
  • SOURCES
    • FILE
    • URL
    • REMOTE
    • YSQL
    • ODBC
    • JDBC
    • HDFS
    • S3
  • dictGet

有关如何处理此层次结构的示例:

  • ALTER特权包括所有其他ALTER *特权。
  • ALTER CONSTRAINT包括ALTER ADD CONSTRAINT和ALTER DROP CONSTRAINT特权。

级别(从低到高):

  • COLUMN — 可以授予列,表,数据库或全局权限。
  • TABLE — 可以授予表,数据库或全局权限。
  • VIEW — 可以授予视图,数据库或全局权限。
  • DICTIONARY — 可以为字典,数据库或全局授予特权。
  • DATABASE —可以授予数据库权限或全局权限。
  • GLOBAL —只能手语全局特权。
  • GROUP — 分组不同级别的特权。 授予GROUP级别特权时,仅授予该组中与所使用语法相对应的特权。

允许的语法示例:

  • GRANT SELECT(x) ON db.table TO user
  • GRANT SELECT ON db.* TO user

不允许的语法示例:

  • GRANT CREATE USER(x) ON db.table TO user
  • GRANT CREATE USER ON db.* TO user

特殊特权ALL将所有特权授予用户帐户或角色。

默认情况下,用户帐户或角色没有特权。

如果用户或角色没有特权,则显示为“NONE”特权。

一些查询的实现需要一系列的特权。

例如,要执行RENAME查询,您需要以下特权:SELECT,CREATE TABLE,INSERT和DROP TABLE。

SELECT

允许执行SELECT查询。

特权级别:COLUMN。

授予此特权的用户可以在指定表和数据库中的指定列列表上执行SELECT查询。 如果用户包括其他列,则指定查询将不返回任何数据。

--john无法执行SELECT z FROM db.table.,SELECT * FROM db.table也不可用。
--在处理此查询时,ClickHouse不会返回任何数据,即使x和y也是如此。
--唯一的例外是如果表仅包含x和y列。在这种情况下,ClickHouse将返回所有数据。
GRANT SELECT(x,y) ON db.table TO john

INSERT

允许执行INSERT查询。

特权级别:COLUMN。

授予此特权的用户可以在指定表和数据库中的指定列列表上执行INSERT查询。 如果用户包括其他列,则在指定的查询中不会插入任何数据。

--授予的特权允许john将数据插入db.table中的x与y列。
GRANT INSERT(x,y) ON db.table TO john

ALTER

允许根据以下特权层次执行ALTER查询:

ALTER. Level: COLUMN.

  • ALTER TABLE. Level: GROUP
    • ALTER UPDATE. Level: COLUMN. Aliases: UPDATE
    • ALTER DELETE. Level: COLUMN. Aliases: DELETE
    • ALTER COLUMN. Level: GROUP
      • ALTER ADD COLUMN. Level: COLUMN. Aliases: ADD COLUMN
      • ALTER DROP COLUMN. Level: COLUMN. Aliases: DROP COLUMN
      • ALTER MODIFY COLUMN. Level: COLUMN. Aliases: MODIFY COLUMN
      • ALTER COMMENT COLUMN. Level: COLUMN. Aliases: COMMENT COLUMN
      • ALTER CLEAR COLUMN. Level: COLUMN. Aliases: CLEAR COLUMN
      • ALTER RENAME COLUMN. Level: COLUMN. Aliases: RENAME COLUMN
    • ALTER INDEX. Level: GROUP. Aliases: INDEX
      • ALTER ORDER BY. Level: TABLE. Aliases: ALTER MODIFY ORDER BYMODIFY ORDER BY
      • ALTER SAMPLE BY. Level: TABLE. Aliases: ALTER MODIFY SAMPLE BYMODIFY SAMPLE BY
      • ALTER ADD INDEX. Level: TABLE. Aliases: ADD INDEX
      • ALTER DROP INDEX. Level: TABLE. Aliases: DROP INDEX
      • ALTER MATERIALIZE INDEX. Level: TABLE. Aliases: MATERIALIZE INDEX
      • ALTER CLEAR INDEX. Level: TABLE. Aliases: CLEAR INDEX
    • ALTER CONSTRAINT. Level: GROUP. Aliases: CONSTRAINT
      • ALTER ADD CONSTRAINT. Level: TABLE. Aliases: ADD CONSTRAINT
      • ALTER DROP CONSTRAINT. Level: TABLE. Aliases: DROP CONSTRAINT
    • ALTER TTL. Level: TABLE. Aliases: ALTER MODIFY TTLMODIFY TTL
    • ALTER MATERIALIZE TTL. Level: TABLE. Aliases: MATERIALIZE TTL
    • ALTER SETTINGS. Level: TABLE. Aliases: ALTER SETTINGALTER MODIFY SETTINGMODIFY SETTING
    • ALTER MOVE PARTITION. Level: TABLE. Aliases: ALTER MOVE PARTMOVE PARTITIONMOVE PART
    • ALTER FETCH PARTITION. Level: TABLE. Aliases: FETCH PARTITION
    • ALTER FREEZE PARTITION. Level: TABLE. Aliases: FREEZE PARTITION
  • ALTER VIEW Level: GROUP
    • ALTER VIEW REFRESH. Level: VIEW. Aliases: ALTER LIVE VIEW REFRESHREFRESH VIEW
    • ALTER VIEW MODIFY QUERY. Level: VIEW. Aliases: ALTER TABLE MODIFY QUERY

有关如何处理此层次结构的示例:

  • ALTER特权包括所有其他ALTER *特权。
  • ALTER CONSTRAINT包括ALTER ADD CONSTRAINT和ALTER DROP CONSTRAINT特权。

注意:

  • MODIFY SETTING特权允许修改表引擎设置。它不会影响设置或服务器配置参数。
  • ATTACH操作需要CREATE特权。
  • DETACH操作需要DROP特权。
  • 要通过KILL MUTATION查询停止突变,您需要具有启动此突变的特权。 例如,如果要停止ALTER UPDATE查询,则需要ALTER UPDATE,ALTER TABLE或ALTER特权。

CREATE

允许根据以下特权层次执行CREATE和ATTACH DDL查询:

CREATE. Level: GROUP

  • CREATE DATABASE. Level: DATABASE
  • CREATE TABLE. Level: TABLE
  • CREATE VIEW. Level: VIEW
  • CREATE DICTIONARY. Level: DICTIONARY
  • CREATE TEMPORARY TABLE. Level: GLOBAL

注意:

  • 要删除创建的表,用户需要DROP。

DROP

允许根据以下特权层次执行DROP和DETACH查询:

DROP. Level:

  • DROP DATABASE. Level: DATABASE
  • DROP TABLE. Level: TABLE
  • DROP VIEW. Level: VIEW
  • DROP DICTIONARY. Level: DICTIONARY

TRUNCATE

允许执行TRUNCATE查询。

特权级别:TABLE。

OPTIMIZE

允许执行OPTIMIZE TABLE查询。

特权级别:TABLE。

SHOW

允许根据以下特权层次结构执行SHOW,DESCRIBE,USE和EXISTS查询:

SHOW. Level: GROUP

  • SHOW DATABASES. Level: DATABASE. Allows to execute SHOW DATABASESSHOW CREATE DATABASEUSE <database> queries.
  • SHOW TABLES. Level: TABLE. Allows to execute SHOW TABLESEXISTS <table>CHECK <table> queries.
  • SHOW COLUMNS. Level: COLUMN. Allows to execute SHOW CREATE TABLEDESCRIBE queries.
  • SHOW DICTIONARIES. Level: DICTIONARY. Allows to execute SHOW DICTIONARIESSHOW CREATE DICTIONARYEXISTS <dictionary> queries.

注意:

如果用户具有与指定的表,字典或数据库有关的任何其他特权,则该用户具有SHOW特权。

KILL QUERY

允许根据以下特权层次执行KILL查询:

特权级别:GLOBAL。

注意:

KILL QUERY特权允许一个用户杀死其他用户的查询。

ACCESS MANAGEMENT

允许用户执行管理用户,角色和行策略的查询。

ACCESS MANAGEMENT. Level: GROUP

  • CREATE USER. Level: GLOBAL
  • ALTER USER. Level: GLOBAL
  • DROP USER. Level: GLOBAL
  • CREATE ROLE. Level: GLOBAL
  • ALTER ROLE. Level: GLOBAL
  • DROP ROLE. Level: GLOBAL
  • ROLE ADMIN. Level: GLOBAL
  • CREATE ROW POLICY. Level: GLOBAL. Aliases: CREATE POLICY
  • ALTER ROW POLICY. Level: GLOBAL. Aliases: ALTER POLICY
  • DROP ROW POLICY. Level: GLOBAL. Aliases: DROP POLICY
  • CREATE QUOTA. Level: GLOBAL
  • ALTER QUOTA. Level: GLOBAL
  • DROP QUOTA. Level: GLOBAL
  • CREATE SETTINGS PROFILE. Level: GLOBAL. Aliases: CREATE PROFILE
  • ALTER SETTINGS PROFILE. Level: GLOBAL. Aliases: ALTER PROFILE
  • DROP SETTINGS PROFILE. Level: GLOBAL. Aliases: DROP PROFILE
  • SHOW ACCESS. Level: GROUP
    • SHOW_USERS. Level: GLOBAL. Aliases: SHOW CREATE USER
    • SHOW_ROLES. Level: GLOBAL. Aliases: SHOW CREATE ROLE
    • SHOW_ROW_POLICIES. Level: GLOBAL. Aliases: SHOW POLICIESSHOW CREATE ROW POLICYSHOW CREATE POLICY
    • SHOW_QUOTAS. Level: GLOBAL. Aliases: SHOW CREATE QUOTA
    • SHOW_SETTINGS_PROFILES. Level: GLOBAL. Aliases: SHOW PROFILESSHOW CREATE SETTINGS PROFILESHOW CREATE PROFILE

ROLE ADMIN特权允许用户分配和撤消任何角色,包括未使用admin选项分配给用户的角色。

SYSTEM

允许用户根据以下特权层次执行SYSTEM查询。

SYSTEM. Level: GROUP

  • SYSTEM SHUTDOWN. Level: GLOBAL. Aliases: SYSTEM KILLSHUTDOWN
  • SYSTEM DROP CACHE. Aliases: DROP CACHE
    • SYSTEM DROP DNS CACHE. Level: GLOBAL. Aliases: SYSTEM DROP DNSDROP DNS CACHEDROP DNS
    • SYSTEM DROP MARK CACHE. Level: GLOBAL. Aliases: SYSTEM DROP MARKDROP MARK CACHEDROP MARKS
    • SYSTEM DROP UNCOMPRESSED CACHE. Level: GLOBAL. Aliases: SYSTEM DROP UNCOMPRESSEDDROP UNCOMPRESSED CACHEDROP UNCOMPRESSED
  • SYSTEM RELOAD. Level: GROUP
    • SYSTEM RELOAD CONFIG. Level: GLOBAL. Aliases: RELOAD CONFIG
    • SYSTEM RELOAD DICTIONARY. Level: GLOBAL. Aliases: SYSTEM RELOAD DICTIONARIESRELOAD DICTIONARYRELOAD DICTIONARIES
    • SYSTEM RELOAD EMBEDDED DICTIONARIES. Level: GLOBAL. Aliases: RELOAD EMBEDDED DICTIONARIES
  • SYSTEM MERGES. Level: TABLE. Aliases: SYSTEM STOP MERGESSYSTEM START MERGESSTOP MERGESSTART MERGES
  • SYSTEM TTL MERGES. Level: TABLE. Aliases: SYSTEM STOP TTL MERGESSYSTEM START TTL MERGESSTOP TTL MERGESSTART TTL MERGES
  • SYSTEM FETCHES. Level: TABLE. Aliases: SYSTEM STOP FETCHESSYSTEM START FETCHESSTOP FETCHESSTART FETCHES
  • SYSTEM MOVES. Level: TABLE. Aliases: SYSTEM STOP MOVESSYSTEM START MOVESSTOP MOVESSTART MOVES
  • SYSTEM SENDS. Level: GROUP. Aliases: SYSTEM STOP SENDSSYSTEM START SENDSSTOP SENDSSTART SENDS
    • SYSTEM DISTRIBUTED SENDS. Level: TABLE. Aliases: SYSTEM STOP DISTRIBUTED SENDSSYSTEM START DISTRIBUTED SENDSSTOP DISTRIBUTED SENDSSTART DISTRIBUTED SENDS
    • SYSTEM REPLICATED SENDS. Level: TABLE. Aliases: SYSTEM STOP REPLICATED SENDSSYSTEM START REPLICATED SENDSSTOP REPLICATED SENDSSTART REPLICATED SENDS
  • SYSTEM REPLICATION QUEUES. Level: TABLE. Aliases: SYSTEM STOP REPLICATION QUEUESSYSTEM START REPLICATION QUEUESSTOP REPLICATION QUEUESSTART REPLICATION QUEUES
  • SYSTEM SYNC REPLICA. Level: TABLE. Aliases: SYNC REPLICA
  • SYSTEM RESTART REPLICA. Level: TABLE. Aliases: RESTART REPLICA
  • SYSTEM FLUSH. Level: GROUP
    • SYSTEM FLUSH DISTRIBUTED. Level: TABLE. Aliases: FLUSH DISTRIBUTED
    • SYSTEM FLUSH LOGS. Level: GLOBAL. Aliases: FLUSH LOGS

SYSTEM RELOAD EMBEDDED DICTIONARIES特权由SYSTEM RELOAD DICTIONARY ON *。*特权隐式授予。

INTROSPECTION

允许使用自省功能。

INTROSPECTION. Level: GROUP. Aliases: INTROSPECTION FUNCTIONS

  • addressToLine. Level: GLOBAL
  • addressToSymbol. Level: GLOBAL
  • demangle. Level: GLOBAL

SOURCES

允许使用外部数据源。 适用于表引擎和表函数。

SOURCES. Level: GROUP

  • FILE. Level: GLOBAL
  • URL. Level: GLOBAL
  • REMOTE. Level: GLOBAL
  • YSQL. Level: GLOBAL
  • ODBC. Level: GLOBAL
  • JDBC. Level: GLOBAL
  • HDFS. Level: GLOBAL
  • S3. Level: GLOBAL

SOURCES特权允许使用所有源。 您也可以分别为每个来源授予特权。 要使用源,您需要其他特权。

举例:

  • 要使用MySQL表引擎创建表,您需要CREATE TABLE (ON db.table_name) 和MYSQL特权。
  • 要使用mysql表功能,您需要CREATE TEMPORARY TABLE和MYSQL特权。

dictGet

允许用户执行dictGet,dictHas,dictGetHierarchy和dictIsIn函数。

特权级别:DICTIONARY.

  • dictGet. Aliases: dictHasdictGetHierarchydictIsIn

举例:

  • GRANT dictGet ON mydb.mydictionary TO john
  • GRANT dictGet ON mydictionary TO john

ALL

将受监管实体的所有特权授予用户帐户或角色。

NONE

不授予任何特权。

ADMIN OPTION

ADMIN OPTION特权允许用户将其角色授予其他用户。

 

REVOKE语句

撤消用户或角色的特权。

语法

--撤销用户的特权
REVOKE [ON CLUSTER cluster_name] privilege[(column_name [,...])] [,...] ON {db.table|db.*|*.*|table|*} FROM {user | CURRENT_USER} [,...] | ALL | ALL EXCEPT {user | CURRENT_USER} [,...]

--撤消用户角色
REVOKE [ON CLUSTER cluster_name] [ADMIN OPTION FOR] role [,...] FROM {user | role | CURRENT_USER} [,...] | ALL | ALL EXCEPT {user_name | role_name | CURRENT_USER} [,...]

描述

要撤消某些特权,可以使用比计划撤消范围更广的特权。

例如,如果用户具有SELECT(x,y)特权,则管理员可以执行REVOKE SELECT(x,y)...或REVOKE SELECT * ...,甚至是REVOKE ALL PRIVILEGES ...查询来撤销此操作 特权。

部分撤销

您可以撤消部分特权。 例如,如果用户具有SELECT *.* 特权,则可以从中撤消从某些表或数据库读取数据的特权。

举例

--授予john用户帐户特权,以便从所有数据库中进行选择,但accounts帐户除外:
GRANT SELECT ON *.* TO john;
REVOKE SELECT ON accounts.* FROM john;

--授予mira用户帐户特权,使其可以从accounts.staff表的所有列中进行SELECT,除了wage
GRANT SELECT ON accounts.staff TO mira;
REVOKE SELECT(wage) ON accounts.staff FROM mira;

OPTIMIZE语句

OPTIMIZE TABLE [db.]name [ON CLUSTER cluster] [PARTITION partition | PARTITION ID 'partition_id'] [FINAL] [DEDUPLICATE]

该查询尝试使用MergeTree系列中的表引擎,对表的未计划合并的数据部分合并。

MaterializedView和Buffer引擎也支持OPTMIZE查询。 不支持其他表引擎。

当OPTIMIZE 用于ReplicatedMergeTree表引擎,clickhouse创建一个任务并等待在所有节点上运行(如果启用了Replication_alter_partitions_sync设置)

  • 如果OPTIMIZE由于任何原因未执行合并,则不会通知客户。 要启用通知,请使用optimize_throw_if_noop设置。
  • 如果指定PARTITION,则仅优化指定的分区。How to set partition expression.
  • 如果指定FINAL,则即使所有数据已经在一个部分中,也会执行优化。
  • 如果指定DEDUPLICATE,则将对完全相同的行进行重复数据删除(比较所有列),仅支持MergeTree引擎。

OPTIMIZE无法修复“Too many parts”错误。

SET语句

SET param = value
SET profile = 'profile-name-from-the-settings-file'

为当前会话的参数设置分配值。 您不能以这种方式更改服务器设置。

您还可以在单个查询中设置来自指定设置配置文件的所有值。

SET ROLE语句

为当前用户激活角色。

SET ROLE {DEFAULT | NONE | role [,...] | ALL | ALL EXCEPT role [,...]}

SET DEFAULT ROLE

为用户设置默认角色。

默认角色在用户登录时自动激活。 您只能将以前授予的角色设置为默认值。 如果未将角色授予用户,则ClickHouse会引发异常。

SET DEFAULT ROLE {NONE | role [,...] | ALL | ALL EXCEPT role [,...]} TO {user|CURRENT_USER} [,...]

举例

--为用户设置多个默认角色:
SET DEFAULT ROLE role1, role2, ... TO user

--将所有角色默认授予给用户:
SET DEFAULT ROLE ALL TO user

--从用户清除默认角色:
SET DEFAULT ROLE NONE TO user

--将除了一些角色外的所有角色默认授予给用户:
SET DEFAULT ROLE ALL EXCEPT role1, role2 TO user