带有“信任”选项的 PostGreSQL 身份验证失败

Jay*_*eri 3 postgresql ubuntu-12.04

我正在尝试在 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
Run Code Online (Sandbox Code Playgroud)

我可以使用 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"
Run Code Online (Sandbox Code Playgroud)

然后,我尝试了设置密码jay使用ALTER USER的提示,输入该密码,这也失败了。显然,我无法连接。但是,我无法弄清楚接下来要采取哪些故障排除步骤。

有任何想法吗??

Cra*_*ger 5

PostgreSQL 支持两种不同的连接传输方式:TCP/IP 网络套接字和 unix 域套接字。这些在pg_hba.conf.

根据文档,unix 域套接字连接是local条目,TCP/IP 套接字是host,hostsslhostnossl条目。pg_hba.conf

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

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

BTW,请不要trust在进入生产环境时使用。本地访问没有重要数据的测试数据库是可以的,但仅此而已。