跳到主要内容
跳到主要内容

查询权限

ClickHouse中的查询可以分为几种类型:

  1. 读取数据查询: SELECT, SHOW, DESCRIBE, EXISTS
  2. 写入数据查询: INSERT, OPTIMIZE
  3. 修改设置查询: SET, USE
  4. DDL 查询: CREATE, ALTER, RENAME, ATTACH, DETACH, DROP, TRUNCATE
  5. KILL QUERY

以下设置按照查询类型调节用户权限:

readonly

限制读取数据、写入数据和修改设置查询的权限。

当设置为1时,允许:

  • 所有类型的读取查询(如SELECT和等效查询)。
  • 仅修改会话上下文的查询(如USE)。

当设置为2时,允许上述内容外加:

  • SET和CREATE TEMPORARY TABLE

    提示

    如EXISTS、DESCRIBE、EXPLAIN、SHOW PROCESSLIST等查询等同于SELECT,因为它们只从系统表中选择。

可选值:

  • 0 — 允许读取、写入和修改设置的查询。
  • 1 — 仅允许读取数据查询。
  • 2 — 允许读取数据和修改设置的查询。

默认值: 0

备注

设置readonly = 1后,用户无法在当前会话中更改readonlyallow_ddl设置。

HTTP接口中使用GET方法时,readonly = 1会自动设置。要修改数据,请使用POST方法。

设置readonly = 1禁止用户更改设置。也有方法禁止用户仅更改特定设置。还有方法在readonly = 1限制下仅允许更改特定设置。有关详细信息,请参见设置约束

allow_ddl

允许或拒绝DDL查询。

可选值:

  • 0 — 不允许DDL查询。
  • 1 — 允许DDL查询。

默认值: 1

备注

如果当前会话的allow_ddl = 0,则无法运行SET allow_ddl = 1

KILL QUERY

KILL QUERY可以与任何组合的readonly和allow_ddl设置一起执行。