我正在尝试在 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 中连接窗口的屏幕截图:
仔细研究一下这个问题,我发现这个帖子这让我尝试使用 来通过终端进行连接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 套接字是host
和hostssl
条目hostnossl
,按照pg_hba.conf
文档。
在这种情况下,您很可能已将local
连接设置为trust
但将 TCP/IPhost
条目保留为md5
。如果您的 PostGIS 工具使用 TCP/IP 到本地主机而不是 unix 套接字,那么它们应该提供密码。某些客户端库(如 PgJDBC)不支持 unix 套接字,某些程序将默认使用 TCP/IP,即使它们的客户端库支持 unix 套接字,因此这不是您可以控制的。
确保您有一个具有authhost
的条目并执行或以其他方式重新加载/重新启动 Pg。127.0.0.1/32
trust
pg_ctl reload
顺便说一句,请不要trust
在投入生产时使用。对于没有重要数据的测试数据库的本地访问来说,这是可以的,但仅此而已。