Windows正常的Java PostgreSQL连接代码在Linux上遇pg_hba.conf错误
解决Talend生成代码在RunDeck执行时PostgreSQL连接pg_hba.conf错误
问题场景
Talend生成的Java代码在Windows 10本地可正常连接RHEL 8.2服务器上的PostgreSQL数据库并查询数据,但通过Linux本地的RunDeck执行该代码时,抛出如下错误:
org.postgresql.util.PSQLException: FATAL: no pg_hba.conf entry for host
矛盾点:在同一Linux主机上,以postgres用户身份执行psql -h [server ip] -p 5432 -d my_special_db -U my_db_user命令,能够正常登录目标数据库。
已尝试的排查操作
- 检查PostgreSQL服务器设置、pg_hba.conf文件内容、数据库用户权限及服务器日志
- 新增pg_hba.conf中的IP允许规则
- 调整Java连接参数中的SSL配置(如设置
sslfactory=org.postgresql.ssl.NonValidatingFactory)
以上操作均未能解决问题。
最终定位的问题根源及修复方案
经过进一步排查,确定问题由以下三点导致:
- 配置文件指向错误:Talend生成代码所依赖的配置文件未正确配置目标PostgreSQL服务器地址和数据库名称,导致连接请求发送至错误的地址
- 日志级别不足以排查问题:默认日志级别为
warning,无法输出连接过程的详细信息;将日志级别调整为debug5后,才发现连接目标地址错误的关键线索 - pg_hba.conf规则误删:多次修改pg_hba.conf文件时,不小心删除了允许当前Linux主机IP连接的规则条目
针对上述三个问题逐一修正后,RunDeck执行Talend代码时的PostgreSQL连接问题得到解决。
内容的提问来源于stack exchange,提问作者ASheppardWork
相关产品推荐
相关产品推荐

