【问题场景】
在使用 Kettle(Pentaho Data Integration) 工具,将数据从 PostgreSQL 同步至 YashanDB 的过程中,任务启动时报如下错误:
致命错误: 没有用于主机 "10.9.7.54", 用户 "postgres", 数据库 "dev", no encryption 的 pg_hba.conf 记录
错误初始化步骤[source.public.T1]
尽管目标 YashanDB 连接正常,源端 PostgreSQL 却无法建立连接,导致同步失败。
【问题分析】
这是 PostgreSQL 的连接认证机制引发的阻断。
pg_hba.conf 是什么?
这是 PostgreSQL 的核心认证配置文件,用于控制数据库接受哪些主机、用户、认证方式的连接请求。
上述错误的本质是:当前 pg_hba.conf 文件中,缺失了允许 Kettle 所在机器访问的规则,系统无法识别如何进行认证,因此连接被拒绝。
【解决方法】
需要为 PostgreSQL 明确添加一条允许目标主机连接的规则:
步骤如下:
1、打开 PostgreSQL 的 pg_hba.conf 文件,一般路径为:
/home/postgres/pgdata/pg_hba.conf
2、添加如下配置(请根据实际 IP 调整):
host all all 10.9.7.54/32 md5
含义说明:
host:允许 TCP/IP 连接;
all all:任意数据库、任意用户;
10.9.7.54/32:只允许该主机 IP;
md5:使用密码(MD5)认证方式。
3、修改完成后,重启 PostgreSQL 服务以生效:
pg_ctl -D /home/postgres/pgdata restart
【通用建议】
【适用版本】
PostgreSQL 所有主流版本
Kettle 8.x 及以上版本
YashanDB 无需修改,仅源端控制连接权限
【总结】
报错关键点在 PostgreSQL;
排查重点在 pg_hba.conf 文件;
添加 IP 白名单规则 + 选择合适认证方式,即可解决。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。