无法连接远程PostgreSQL数据库:pg_hba.conf配置异常排查
PostgreSQL远程连接失败原因排查与解决
问题原因分析
从报错信息和提供的pg_hba.conf配置来看,核心问题是PostgreSQL服务未加载最新的pg_hba.conf配置。虽然配置文件中已经添加了允许10.10.99.3主机的eprt_admin用户连接的规则,但服务并未读取到该规则,导致连接请求被拒绝。
报错中同时出现SSL加密和无加密两种失败情况,是因为客户端尝试了两种连接方式,但均未匹配到有效配置条目,本质还是配置未生效导致的。
解决办法
1. 重载或重启PostgreSQL服务
修改pg_hba.conf后,必须让PostgreSQL重新加载配置才能生效:
- 重载配置(无需重启服务,推荐):
# 适用于systemd管理的系统 sudo systemctl reload postgresql # 或使用pg_ctl工具(需指定数据目录,替换<版本号>为实际版本) pg_ctl reload -D /var/lib/postgresql/<版本号>/main - 若重载无效,直接重启服务:
sudo systemctl restart postgresql
2. 验证配置条目正确性
确认pg_hba.conf中的规则格式无误:
当前配置中的条目:
host all eprt_admin 10.10.99.3/32 md5
该规则是正确的,含义为:允许来自10.10.99.3的eprt_admin用户,通过TCP连接访问所有数据库,使用MD5密码认证。
3. 检查SSL相关配置(可选)
如果客户端强制要求SSL连接,可将对应规则改为hostssl(需确保服务器已启用SSL):
hostssl all eprt_admin 10.10.99.3/32 md5
同时需要在postgresql.conf中设置ssl = on,修改后重启服务生效。
4. 测试连接
配置生效后,重新执行连接命令验证:
psql -h 10.10.99.1 -p 5432 -U eprt_admin -d postgresql
内容的提问来源于stack exchange,提问作者Sultan Roziyev
相关产品推荐
相关产品推荐

