You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为什么DBeaver/JDBC可连接ClickHouse,HTTP接口却提示鉴权失败?

ClickHouse JDBC驱动底层逻辑

官方提供的ClickHouse JDBC驱动确实基于HTTP协议实现,与8123端口的原生HTTP接口共用同一套服务端监听逻辑,核心交互流程如下:

  • 连接建立时,驱动会自动读取配置里的用户名、密码、默认数据库、超时等参数
  • 认证默认采用HTTP Basic Auth的方式传递账号密码,同时会对特殊字符自动做URL编码处理
  • 执行查询时,驱动会将SQL拼接为符合HTTP接口要求的请求格式,自动补全wait_end_of_query、session_id等通用参数
  • 结果返回后驱动会按JDBC规范将二进制/文本返回值解析为ResultSet对象
正确的CURL请求写法

你遇到的516认证错误,绝大多数是因为密码含特殊字符未编码、或者误用URL参数传递认证信息导致,优先使用与JDBC逻辑一致的Basic Auth方式发起请求:

  1. 基础连通性测试
curl -u 你的实际用户名:你的实际密码 'http://host:8123/'

请求成功会返回Ok.的响应内容。

  1. 带查询测试(验证完整功能)
curl -u 你的实际用户名:你的实际密码 'http://host:8123/?database=你的默认数据库名' --data 'SELECT version()'

如果你的ClickHouse服务开启了HTTPS,将URL前缀替换为https://即可。

  1. 若必须用URL参数传递认证信息,需要先将用户名、密码做URL编码,再填入参数:
# 例如密码为aBc&123@,编码后为aBc%26123%40
curl 'http://host:8123/?user=编码后的用户名&password=编码后的密码'

内容的提问来源于stack exchange,提问作者Matthew Thomas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 09:09:03