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

使用TimescaleDB+Docker Compose创建分布式超表PoC时遇认证错误

解决TimescaleDB分布式超表创建时的fe_sendauth: no password supplied错误

以下是针对该问题的具体排查和解决步骤:

1. 检查数据节点的pg_hba.conf认证配置

Docker环境下,数据节点(au-db)的pg_hba.conf需要允许访问节点的IP通过密码认证连接:

  • 进入数据节点容器:
    docker exec -it <au-db容器名> bash
    
  • 编辑/var/lib/postgresql/data/pg_hba.conf,添加访问节点的IP授权规则:
    host    all             all             <访问节点容器IP>/32        scram-sha-256
    
    可通过docker inspect <访问节点容器名> | grep IPAddress获取访问节点的容器IP。
  • 重启数据节点容器使配置生效:
    docker restart <au-db容器名>
    

2. 确保数据节点的数据库用户密码匹配

访问节点连接数据节点时默认使用当前操作的用户(如postgres),需确保该用户在数据节点有正确的密码配置:

  • 连接到数据节点的数据库,执行:
    ALTER USER postgres WITH PASSWORD 'XXXXX'; -- 使用你add_data_node时指定的密码
    

3. 重新添加数据节点并验证连接

有时add_data_node执行成功但内部连接配置存在异常,可重新添加并验证:

  • 删除已添加的数据节点:
    SELECT delete_data_node('australia-node');
    
  • 重新添加时显式指定用户(若使用非默认用户):
    SELECT add_data_node('australia-node', host => 'au-db', user => 'postgres', password => 'XXXXX', database => 'XXXXX');
    
  • 验证连接状态:
    SELECT node_name, connected FROM timescaledb_information.data_nodes WHERE node_name = 'australia-node';
    
    返回true则表示连接正常。

4. 确认Docker Compose网络配置

确保两个TimescaleDB实例处于同一Docker网络,保证容器名(au-db)可被访问节点解析:

services:
  access-node:
    image: timescale/timescaledb:latest-pg15
    networks:
      - tsdb-network
    # 其他配置...
  au-db:
    image: timescale/timescaledb:latest-pg15
    networks:
      - tsdb-network
    # 其他配置...

networks:
  tsdb-network:
    driver: bridge

5. 创建分布式超表时显式指定认证信息(可选)

若上述步骤无效,可在创建语句中直接指定数据节点的用户和密码:

SELECT create_distributed_hypertable('sensor_data', 'time', 'sensor_id', data_nodes => ARRAY['australia-node'], user => 'postgres', password => 'XXXXX');

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 13:28:23