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

Docker部署Chainlink节点连接PostgreSQL报no pg_hba.conf错误如何解决?

Chainlink节点PostgreSQL连接拒绝问题修复方案

错误本质

本次报错是PostgreSQL的访问控制配置文件pg_hba.conf未放行Chainlink节点IP(192.168.1.198)的非SSL访问请求,属于PostgreSQL默认安全限制的正常拦截。

修复步骤

  • 修改PostgreSQL访问控制配置
    进入PostgreSQL容器,找到pg_hba.conf文件(默认路径为/var/lib/postgresql/data/pg_hba.conf),在文件末尾添加放行规则:
    测试环境可临时放行所有IP访问,方便调试:
    host  all  all  0.0.0.0/0  scram-sha-256
    
    生产环境请严格限定为Chainlink节点的固定IP:
    host  postgres  postgres  192.168.1.198/32  scram-sha-256
    
    同时修改同目录下的postgresql.conf,将listen_addresses配置改为'*',允许PostgreSQL监听所有网卡的请求。
  • 重启PostgreSQL容器使配置生效
    执行命令:
    docker restart <你的PostgreSQL容器名/容器ID>
    
  • 可选:更稳定的Docker容器网络配置(推荐)
    使用宿主机局域网IP连接两个容器容易因IP变动导致连接失效,建议创建自定义Docker网桥实现容器间稳定互通:
    1. 创建自定义网桥
    docker network create chainlink-net
    
    1. 启动PostgreSQL容器时加入网桥(如果容器已运行,可执行docker network connect chainlink-net <PostgreSQL容器名>添加)
    2. 调整Chainlink启动命令,加入同一个网桥,同时删除原命令中多余的无效-v参数(你原命令中的-v未指定挂载路径,会导致启动报错),示例命令:
    docker run --network chainlink-net -p 6688:6688 -v $(pwd)/chainlink-data:/chainlink -it --env-file=.env smartcontract/chainlink:0.10.11 local n
    
    1. 修改.env文件中的DATABASE_URL,将主机地址替换为PostgreSQL的容器名,无需再写固定IP:
    DATABASE_URL=postgresql://postgres:somePassword@<PostgreSQL容器名>:5432/postgres?sslmode=disable
    

注:如果PostgreSQL使用md5加密方式存储密码,将上述规则中的scram-sha-256替换为md5即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 14:15:00