ClickHouse HTTP 接口
8123 是列式数据库 ClickHouse 的 HTTP 接口端口。除了原生的 TCP 协议(9000)之外,ClickHouse 还提供 HTTP 入口:用 curl 或浏览器就能提交 SQL,结果以文本或 JSON 返回,数据导入与外部系统集成也常走这条通道,不必引入原生客户端。
基本信息
| 服务 | ClickHouse HTTP 接口 |
|---|---|
| 协议 | TCP/HTTP 8123,原生协议 9000 |
| 用途 | OLAP 查询、数据导入、外部系统集成 |
| 默认用户 | default,默认允许任意地址且无口令 |
| 安全等级 | 仅数据网段 |
典型使用场景
- 用 curl 或浏览器直接提交 SQL 做临时查询
- 以 CSV 或 TSV 流式导入数据
- 报表与外部系统通过 HTTP 接口对接,避免引入原生客户端
- 排查连不上数据库,先分清 HTTP 端口与原生端口
- 安全加固时确认 default 用户已设口令并限制来源网段
查询与安全配置
查询与安全配置
curl -s 'http://localhost:8123/?query=SELECT%20version()'
curl 'http://localhost:8123/' --data-binary 'SELECT count() FROM system.tables'
curl -s 'http://user:pass@localhost:8123/?query=SELECT%201' # 带认证访问
# 收紧: users.xml 中设置 password 与 networks 网段端口与用户配置
| 项目 | 值 | 说明 |
|---|---|---|
| HTTP 接口 | 8123 | 本条目,查询与导入都在此 |
| 原生协议 | 9000 | 命令行客户端与驱动的默认入口 |
| 集群通信 | 9009 | 副本与分片之间同步使用 |
| default 用户 | users.xml 配置项 | 默认无口令且允许任意来源,必须收紧 |
8123 暴露公网且 default 用户空口令,会导致数据被全量导出,甚至出现库表被删除后勒索的事件。加固要同时做三件事:设置口令、限制可登录网段、把端口收进数据网段。
排查提示:HTTP 接口返回的错误信息通常比原生客户端更直白,权限或语法问题都能直接从响应里看出来。做容量对比与脚本化运行时用 HTTP 接口更方便,需要长连接与压缩时再切到原生协议。
导入导出提示:HTTP 接口可以通过参数指定 TSV、JSON 等返回格式,批量导入时优先用流式写入并控制单次请求的分片大小。一次性提交过大的请求容易触发内存限制,错误信息里通常会提示配额相关字样。