ClickHouse集群分布式查询default用户认证失败问题排查咨询
排查ClickHouse分布式查询A105节点认证失败的几个方向
1. 先查集群配置里的A105节点地址
- 去看集群配置文件(一般在
/etc/clickhouse-server/config.d/下的xml文件),确认A105的副本配置是不是写了localhost或者127.0.0.1?要是写的本地地址,其他节点发起分布式查询时会用自己的localhost去连,肯定认证失败,必须改成机器名A105或者对应的内网IP。 - 顺便确认A105的ClickHouse监听地址,执行
netstat -tulpn | grep clickhouse,得确保它监听的是机器的内网/公网IP,不是只绑localhost。
2. 核对跨节点查询的用户凭证
- 分布式查询时,发起节点会用当前执行用户的密码去访问目标节点。别想当然以为密码一致,先在出问题的机器上执行
echo $pw,看看环境变量里的密码是不是正确的,有没有特殊字符导致解析错误。 - 直接用明文密码测试:
clickhouse-client -h A105 -u default --password '你的明文密码',进去后再跑分布式查询,看还会不会报错。
3. 扒A105的用户权限配置细节
- 就算你说host_regexp没问题,也再仔细核对
users.xml或者users.d/下的配置:default用户的host_regexp是不是真的覆盖了所有发起查询节点的IP或主机名?比如正则是不是漏了.*,或者符号没转义(比如.写成了.而不是\.)。 - 在A105上执行
clickhouse-client -q "SELECT name, host_regexp, password_sha256_hex FROM system.users WHERE name='default'",看看有没有多个default用户条目——比如一个是本地访问的,一个是远程访问的,远程那个密码哈希和其他节点不一样?这种情况很容易踩坑。
4. 确认A105的ClickHouse加载了正确配置
- 在A105上跑
clickhouse-client -q "SELECT * FROM system.configs",看加载的配置路径是不是你修改过的那个,别改了半天配置文件,服务根本没加载。 - 检查配置文件的权限:
/etc/clickhouse-server/users.d/下的文件是不是clickhouse用户能读的?权限不对的话,服务加载不了配置,自然会认证失败。
5. 抓日志看具体细节
- 去A105的日志目录(默认
/var/log/clickhouse-server/),搜认证失败的日志:grep "AUTHENTICATION_FAILED" clickhouse-server.log。日志里会显示发起请求的源IP、用户名,能精准定位是哪个节点用哪个用户连过来的,对比配置就知道问题在哪了。 - 同时也看看发起查询节点的ClickHouse日志,有没有凭证传递相关的报错。
6. 测试分布式表的分片路由
- 强制只查A105所在的分片:
SELECT * FROM 你的分布式表 WHERE _shard_num = X(X是A105对应的分片编号),如果还是报错,说明就是这个分片和A105的交互有问题;如果不报错,可能是其他分片路由到A105时的凭证出了问题。 - 检查分布式表的定义,看看集群配置里是不是给A105的副本单独指定了用户密码?有些集群配置会单独写副本的访问凭证,要是这里写错了也会出问题。
内容的提问来源于stack exchange,提问作者nick
相关产品推荐
相关产品推荐

