Navicat 16.1+ 必须选 ClickHouse 类型,不可选 MySQL 或 PostgreSQL;HTTP 模式需在 Host 填带 http:// 前缀的完整 URL(如 http://host:8123),Database 必填,Advanced 中须关闭 Use SSL。
Navicat 16 必须选 ClickHouse 类型,不能选 MySQL 或 HTTP 驱动
navicat 16.1+ 内置了原生 clickhouse 连接类型,但很多人误以为“http 端口 = 选 http 驱动”——它压根没有独立的 http 驱动选项。选错类型是 90% 连接失败的根源。
实操要点:
- 新建连接时,“连接类型”下拉框里必须选
ClickHouse(不是MySQL、PostgreSQL,也没有叫HTTP的选项) - 旧版本 Navicat(如 15.5)虽标称支持 ClickHouse,但对 HTTP 模式兼容极差;只有 16.1 及以上才稳定支持 8123 端口
- 如果下拉框里根本没有
ClickHouse,说明你用的是 16.0 或更早的 16.x 分支,需升级到 16.1.10+(查版本:帮助 → 关于 Navicat)
Host 字段必须带 http:// 前缀,且 Database 不可为空
Navicat 对 HTTP 模式格式极其敏感:不加 http://,它会强行当成 Native 协议去连,直接报“驱动不匹配”或“Connection refused”。
正确填写方式:
-
Host:填完整 URL,例如http://your-cluster-xxx.clickhouse.aliyuncs.com:8123(注意开头http://,结尾不要斜杠) -
Port字段留空或填8123—— 填了也行,但以 Host 中的端口为准 -
Database:必须显式填一个已存在的库名,例如default;留空会导致后续任何查询都报DB::Exception: Database not specified - 用户名密码含
@、/、:等字符,必须 URL 编码,例如密码p@ss/word→p%40ss%2Fword
云厂商强制 Header 场景下,Navicat 会静默失败
部分云服务(如 ByteHouse、火山引擎 CK 实例)要求 HTTP 请求携带 X-ClickHouse-User 或 X-ClickHouse-Key 头,而 Navicat 完全不提供自定义 Header 的入口。
现象与应对:
- 测试连接显示“成功”,但一执行查询就卡住或返回空结果——这不是网络问题,是服务端因缺 Header 直接丢弃请求
- 查 ClickHouse 服务端日志:
sudo journalctl -u clickhouse-server -n 100 | grep -i "header\|400",若看到Missing required header类提示,基本可确认 - 此时唯一解法是切回 Native 模式(9000 端口),或换用 DBeaver(支持手动加 Header)
Advanced 标签页要关掉 SSL,除非你真配了 HTTPS
Navicat 在 ClickHouse 类型下勾选 “Use SSL” 后,会尝试走 https:// + 8443 端口,但绝大多数云实例并未启用 HTTPS 接口(只开了 8123 HTTP)。
后果很直接:
- 连接测试无报错,但实际发出去的是 TLS 握手包,服务端无法解析,返回乱码或直接断连
- 务必在连接属性 →
Advanced标签页中取消勾选Use SSL - 如果云厂商确实提供了 HTTPS 地址(如
https://xxx:8443),则 Host 改为该地址,并确保 CA 证书路径填对(不是 server.crt,是根 CA)
http:// 前缀,输错一次,后面所有排查都是白忙。











