跳至主要内容

查询权限

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

  1. 读取数据查询:SELECTSHOWDESCRIBEEXISTS
  2. 写入数据查询:INSERTOPTIMIZE
  3. 更改设置查询:SETUSE
  4. DDL 查询:CREATEALTERRENAMEATTACHDETACHDROP 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 设置组合执行。