【问题标题】:"no pg_hba.conf entry for host" but "LOG: connection authorized"“主机没有 pg_hba.conf 条目”但“LOG:连接已授权”
【发布时间】:2013-08-06 05:46:00
【问题描述】:

我有一个奇怪的问题。我有一个使用 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

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

有什么想法吗?谢谢!

【问题讨论】:

  • 只是猜测:客户端库不兼容?
  • Hmmm... 可能是,但我不太相信,因为我使用的是标准 php 库。来自 phpinfo 的信息:PostgreSQL(libpq) 版本 9.1.9 PostgreSQL(libpq) PostgreSQL 9.1.9 on x86_64-redhat-linux-gnu,由 gcc (GCC) 4.7.2 编译 20120921 (Red Hat 4.7.2-2), 64 -位

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


【解决方案1】:

如果我猜测的话,我会猜测是某些原因导致 pg_hba.conf 被错误地读取,可能暴露了底层系统中的某种错误,或者可能存在另一个非错误问题。

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

【讨论】:

    猜你喜欢
    • 2010-11-27
    • 1970-01-01
    • 2015-10-18
    • 2013-10-19
    • 2014-10-27
    • 1970-01-01
    • 2020-07-29
    • 2014-09-19
    相关资源
    最近更新 更多