跳转到主要内容
clickhousectl 是 ClickHouse 的 命令行客户端,适用于本地和云端。 使用 clickhousectl,你可以:
  • 安装和管理本地 ClickHouse 版本
  • 启动和管理本地 ClickHouse 服务器
  • 运行和管理本地 Postgres 实例
  • 在 ClickHouse 服务器上执行查询
  • 设置 ClickHouse Cloud 并创建由云端托管的 ClickHouse 集群
  • 创建和管理 ClickHouse Cloud Postgres 服务
  • 管理 ClickHouse Cloud 资源
  • 创建和管理用于数据摄取的 ClickPipes (S3、Kafka、Kinesis、Postgres、MySQL、MongoDB、BigQuery)
  • 将官方 ClickHouse agent 技能安装到受支持的代码智能体中
  • 将本地 ClickHouse 开发推送到云端
clickhousectl 可帮助开发者和 AI 智能体使用 ClickHouse 进行开发。

安装

快速安装

安装脚本会下载适用于你所用操作系统的正确版本,并将其安装到 ~/.local/bin/clickhousectl。为方便使用,还会自动创建一个 chctl 别名。

要求

本地

安装和管理 ClickHouse 版本

clickhousectl 会从 builds.clickhouse.com 下载 ClickHouse 二进制文件;如果该站点没有可用构建,则会回退到 packages.clickhouse.com (Linux) 或 GitHub Releases (macOS) 。
local use 还会在 ~/.local/bin/clickhouse 创建一个指向所选版本二进制文件的符号链接,从而让普通的 clickhouse 命令 (例如 clickhouse localclickhouse client) 可通过 PATH 直接使用。传入 --no-global 可跳过此步骤。如果该路径处已存在普通文件,则会保留原状并发出警告。对当前启用的默认版本执行 local remove 也会清除此符号链接。

ClickHouse 二进制文件存储

ClickHouse 二进制文件存放在全局存储库中,因此可供多个项目共享使用,无需重复占用存储空间。二进制文件存放在 ~/.clickhouse/ 中:

初始化项目

init 会在你当前的工作目录中初始化适用于 ClickHouse 和 Postgres 项目文件的标准文件夹结构。此步骤是可选的;如果你愿意,也可以使用自己的文件夹结构。 它会创建以下结构:

执行查询

创建和管理 ClickHouse 服务器

启动并管理 ClickHouse 服务器实例。每个服务器都会在 .clickhouse/servers/<name>/data/ 下拥有各自独立的数据目录。
**服务器命名:**如果不使用 --name,第一个服务器的名称为 “default”。如果 “default” 已在运行,则会生成一个随机名称 (例如 “bold-crane”) 。如果需要可反复启动/停止的固定标识,请使用 --name **端口:**默认端口为 HTTP 8123 和 TCP 9000。如果这些端口已被占用,系统会自动分配空闲端口并在输出中显示。使用 --http-port--tcp-port 可显式指定端口。 **全局服务器管理:**将 --globalliststopstop-all 一起使用,即可在整个系统范围内跨所有项目执行操作。server list --global 会显示所有正在运行的 ClickHouse 服务器,并包含一个 Project 列,用于标明每个服务器所属的目录。

本地服务器的自定义配置文件

本地服务器启动时会采用合理的默认设置,但有时你可能需要修改某项设置。将配置文件放入 ~/.clickhouse/configs/,并在启动服务器时按名称应用:
这个指定名称的文件会叠加在 ClickHouse 的内置默认配置之上 (通过 config.d) ,因此它只需包含你想更改的设置,无需提供完整的配置。文件可以是 .xml.yaml.yml,你可以按名称引用它们,带或不带扩展名均可。

项目本地数据目录

所有服务器数据都存放在项目目录中的 .clickhouse/ 内:
每个具名服务器都有各自的数据目录,因此服务器之间完全隔离。数据会在重启后保留。按名称停止并重新启动服务器,即可从上次离开的地方继续。使用 clickhousectl local server remove <name> 可永久删除某个服务器的数据。

运行本地 Postgres

除了 ClickHouse,clickhousectl 还可以运行和管理本地 Postgres 实例。本地 Postgres 基于 Docker,因此必须先安装并启动 Docker。每个实例通过名称和主版本号进行标识,因此可以让多个 Postgres 版本并行运行,并分别使用独立的数据目录。

身份验证

使用 API 密钥 (推荐) 或 OAuth (基于浏览器) 对 ClickHouse Cloud 进行身份验证。 如果您还没有 ClickHouse Cloud 账户,clickhousectl cloud auth signup 会在浏览器中打开注册页面。

API 密钥/Secret (推荐)

API 密钥是推荐的身份验证方式,尤其是在通过 AI 智能体驱动命令行客户端时。你可以创建有范围限制的 API 密钥,只授予你选择的权限 (只读或读/写) ,并且每个密钥都绑定到单个组织。这使其成为一种安全且遵循最小权限原则的方式,可为命令行客户端提供访问权限。
凭据会保存在 .clickhouse/credentials.json 中 (仅当前项目) 。 你也可以使用环境变量,可以在你的会话中导出:
或者将其放在当前工作目录中的 .env 文件里:
或者也可以通过任意命令的标志直接传入凭据:

OAuth 登录

这会打开浏览器,通过 OAuth device flow 进行身份验证。令牌会保存到 .clickhouse/tokens.json (仅限当前项目目录) 。
OAuth 访问当前仅为 只读,并且可访问 你所属的所有组织。如果需要写入权限,或希望将命令行客户端限定为单个组织,请改为创建一个有作用域的 API 密钥

认证状态与退出登录

凭据解析顺序:CLI 参数 > .clickhouse/credentials.json > 已导出的环境变量 > .env 文件 > OAuth 令牌。

调试所使用的凭证来源

为任意 cloud 命令添加 --debug,即可在命令运行前将解析后的凭证来源 (以及 API URL) 打印到 stderr。

Cloud

通过 API 管理 ClickHouse Cloud 服务。

组织

服务

服务创建选项

Query API 认证模式

cloud service query 是通过 HTTP 对云服务运行 SQL 的标准方式,无需 clickhouse 可执行文件,也无需服务密码。它支持两种凭据模式:
  • API key 认证 (读 + 写 SQL) :当 cloud service query 首次对某个尚未存储 key 的服务运行时,它会为该服务配置一个 Query API 端点,并创建一个绑定到该端点的专用 API key。该 key (keyIdkeySecretendpointId) 会存储在 .clickhouse/credentials.jsonservice_query_keys.<service-id> 下。该 key 的作用域仅限于单个服务,因此它可以对该服务执行读写操作 (SELECT、INSERT、DDL) ,但无法访问该组织中的任何其他服务。传入 --no-auto-enable 可让命令在不进行配置的情况下直接失败。
  • OAuth (cloud auth login) :查询会以你自己的身份运行,就像 Web SQL Console 一样。使用 OAuth 时,你在该服务上的 SQL 权限为 只读。不会配置或存储 Query API key。--no-auto-enable 在此模式下不起作用。
对处于 休眠 状态的服务发起查询时,这两种认证模式都会自动将其唤醒 (首次查询可能需要一分钟) 。已停止 的服务永远不会被唤醒:查询会失败,并提示运行 cloud service start。设置 CLICKHOUSE_CLOUD_QUERY_HOST 可覆盖自动推导出的 Query API host。

查询端点管理

专用终结点管理

Backup 配置

Postgres 服务

clickhousectl 还可以创建和管理 ClickHouse Cloud Postgres 服务,其用法与上面的 ClickHouse 服务命令类似。

Postgres 服务创建选项

Backup

ClickPipes

管理用于将外部来源的数据摄取到 ClickHouse Cloud 的 ClickPipes。

创建 ClickPipes

每种源类型在 clickpipe create 下都有对应的子命令:
如需查看每种源类型的完整选项列表,请使用 clickhousectl cloud clickpipe create <source> --help

成员

邀请

活动

JSON 输出

使用 --json 标志输出 JSON 格式的响应。
clickhousectl 会自动检测编码 agent 上下文 (Claude Code、Cursor、Codex、Gemini CLI、Goose、Devin,以及任何设置了标准 AGENT 环境变量的工具) ,并自动将 JSON 输出到 stdout,无需设置 --json

退出代码

退出代码遵循 gh 命令行客户端的约定:

技能

ClickHouse/agent-skills 安装 ClickHouse 官方 Agent Skills。

非交互式标志

自行更新

clickhousectl 可以自行更新到最新版本:
命令行客户端还会在后台检查更新 (最多每 24 小时检查一次) ,并在有新版本可用时显示通知。
最后修改于 2026年6月25日