使用“信任”选项的 PostGreSQL 身份验证失败

使用“信任”选项的 PostGreSQL 身份验证失败

我正在尝试在 Ubuntu 12.04 上使用 PostGreSQL 9.1 设​​置 PostGIS 数据库。我已经设置了数据库,创建了一个没有密码的用户帐户“jay”,并添加了空间功能第 2.5 节,并将我的 pg_hba.conf 设置为local

# "local" is for Unix domain socket connections only
local   all             all                                     trust

我可以使用 PGAdminIII 连接到数据库,无需密码即可连接,但当我尝试通过 PostGIS 或 QuantumGIS 连接时连接失败。以下是 QuantumGIS 中连接窗口的屏幕截图:
PostGIS 连接

仔细研究一下这个问题,我发现这个帖子这让我尝试使用 来通过终端进行连接psql -U jay -h localhost gis。 它psql提示我输入密码,我按回车键,因为我没有设置密码,它返回psql: fe_sendauth: no password supplied。我再次尝试,这次输入了我的 Ubuntu 用户密码,它返回

psql: FATAL:  password authentication failed for user "jay"
FATAL:  password authentication failed for user "jay"

jay然后我尝试使用设置密码ALTER USER,并在提示符中输入此密码,但同样失败了。显然,我无法连接。但是,我不知道下一步该采取什么故障排除步骤。

有任何想法吗??

答案1

PostgreSQL 支持两种不同的连接传输:TCP/IP 网络套接字和 unix 域套接字。这些配置有不同的条目pg_hba.conf

unix 域套接字连接是local条目,而 TCP/IP 套接字是hosthostssl条目hostnossl,按照pg_hba.conf文档

在这种情况下,您很可能已将local连接设置为trust但将 TCP/IPhost条目保留为md5。如果您的 PostGIS 工具使用 TCP/IP 到本地主机而不是 unix 套接字,那么它们应该提供密码。某些客户端库(如 PgJDBC)不支持 unix 套接字,某些程序将默认使用 TCP/IP,即使它们的客户端库支持 unix 套接字,因此这不是您可以控制的。

确保您有一个具有authhost的条目并执行或以其他方式重新加载/重新启动 Pg。127.0.0.1/32trustpg_ctl reload

顺便说一句,请不要trust在投入生产时使用。对于没有重要数据的测试数据库的本地访问来说,这是可以的,但仅此而已。

相关内容