“主机没有pg_hba.conf条目”,但“LOG:连接已授权”

时间:2013-08-05 13:34:52

标签: php postgresql connection database-connection postgresql-9.1

我有一个奇怪的问题。我有一个使用PostgreSQL 8.3运行的服务。在并行平台上,我安装了PostgreSQL 9.1并尝试使用我的工作php脚本连接到它。得到了答案:

pg_connect(): Unable to connect to PostgreSQL server: 
FATAL: no pg_hba.conf entry for host "X.X.X.X", 
user "postgres", database "dbtrsy", SSL off

我的pg_hba.conf包含:

host    all         all         X.X.X.X/32      password
host    all         all         Y.Y.Y.Y/32      password

我可以使用Y.Y.Y.Y中的PgAdmin轻松连接到数据库。现在是奇怪的事情:我看日志,我可以看到:

LOG:  connection received: host=X.X.X.X port=55696
LOG:  connection authorized: user=postgres database=dbtrsy
LOG:  disconnection: session time: 0:00:00.017 user=postgres database=dbtrsy host=X.X.X.X port=55696

任何线索,为什么我被正确授权后会自动断开连接?当我尝试使用不同的密码/用户名登录时,它会抛出“密码验证失败”错误,这是正确的。

有什么想法吗?谢谢!

1 个答案:

答案 0 :(得分:0)

如果我猜测,我猜想有些东西导致pg_hba.conf被错误地读取,可能会暴露底层系统中的某种bug,或者可能还有其他非bug问题。

我对此类问题的建议是在PostgreSQL电子邮件列表中进行处理,并准备好显示您的整个配置。您也可以尝试在pg_hba.conf中注释掉行,直到找到问题为止。如果您的配置足够敏感,您可能希望运行具有相同配置但客户端上的IP地址不同的另一台服务器,以创建一个独立的测试用例。