使用Citus搭建PostgreSQL分片时citus_add_node报fe_sendauth错误
解决Citus添加Worker节点时的
fe_sendauth: no password supplied错误 这个错误的核心原因是Worker节点的PostgreSQL配置要求认证,但Coordinator节点发起连接时未提供密码,同时Worker的pg_hba.conf未正确允许Coordinator的IP访问。以下是具体修改步骤:
1. 修改Worker节点的pg_hba.conf配置
找到Worker节点上的pg_hba.conf文件(常见路径:/etc/postgresql/<PostgreSQL版本>/main/pg_hba.conf或/var/lib/postgresql/<版本>/main/pg_hba.conf),添加一条规则允许Coordinator节点IP访问:
生产环境推荐(密码认证)
添加以下行,使用安全的scram-sha-256认证方式:
host all postgres 20.198.17.232/32 scram-sha-256
20.198.17.232/32:Coordinator节点的IP地址,/32表示仅允许该单个IPpostgres:Citus默认使用的数据库用户scram-sha-256:当前PostgreSQL推荐的密码认证算法
测试环境可选(无密码访问,不推荐生产)
如果是测试环境,可临时使用trust规则跳过认证:
host all postgres 20.198.17.232/32 trust
2. 配置Worker节点的Postgres用户密码(仅密码认证场景)
若使用密码认证,需确保Worker节点的postgres用户设置了密码:
sudo -i -u postgres psql -c "ALTER USER postgres WITH PASSWORD '你的安全密码';"
3. 重启Worker节点的PostgreSQL服务
修改pg_hba.conf后必须重启服务才能生效:
sudo systemctl restart postgresql
4. 在Coordinator节点重新执行添加节点命令
临时指定密码执行
PGPASSWORD='你的安全密码' sudo -i -u postgres psql -c "SELECT * from citus_add_node('20.40.43.246', 5432);"
永久免密码配置(推荐)
在Coordinator节点的postgres用户家目录创建.pgpass文件(路径:/var/lib/postgresql/.pgpass),内容为:
20.40.43.246:5432:*:postgres:你的安全密码
然后设置文件权限(必须严格限制,否则PostgreSQL会忽略):
chmod 600 /var/lib/postgresql/.pgpass chown postgres:postgres /var/lib/postgresql/.pgpass
之后再次执行添加节点命令即可无需输入密码。
内容的提问来源于stack exchange,提问作者srinivast6
相关产品推荐
相关产品推荐

