我正在尝试在 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
并在提示符中输入此密码,但也失败了。显然,我无法连接。但是,我无法确定下一步要采取哪些故障排除步骤。
有任何想法吗?
只是不要在连接对话框中将数据库字段留空。
当留空时,它将尝试连接到以您的操作系统登录名命名的数据库,在您的情况下可能不存在该数据库。
Host字段应留空以使用 Unix 域套接字连接,正如问题中显示的片段所暗示的那样
pg_hba.conf
。当您
localhost
输入此字段时,它会尝试一个不是术语中所称的 TCP 连接local
,pg_hba.conf
因此该条目local all all trust
将与此类连接不匹配。首先尝试以 postgres 用户身份连接到数据库
然后创建一个新用户,如果你还没有创建一个数据库,为什么不创建一个数据库
您现在应该能够以自己的身份连接
编辑:
另外,在你的 postgresql.conf 文件中查找
如果
listen_address
被注释掉,那么 postgresql 将不会响应任何请求,或者它可能被设置为只听 localhost 以外的东西。'*' 告诉它监听来自任何地址的请求。编辑2:
此外,尝试使用 0.0.0.0 而不是 localhost 作为主机设置。
我有类似的问题,但我的端口号已关闭这是我的原始帖子
pg_hba.conf
无需用户名和密码即可连接到 qgis。
看来您的端口可能是错误的。请记住,Ubuntu/Debian 编译 psql 以连接到与上游默认端口 5432 不同的端口。他们这样做是为了让您可以同时运行不同安装版本的服务器。不同的客户端也被编译到不同的默认端口。不幸的是,Debian/Ubuntu 的 qgis 没有使用最新服务器的匹配默认端口进行编译,并假定默认端口为 5432。使用 psql 连接并运行
SHOW port;
或检查--help
以找到您的 psql 连接到的默认端口psql --help | grep PORT
。您必须将此端口硬设置为 qgis,因为 qgis 默认值 5432 可能不适用。在这里,我是我的连接屏幕,以证明它有效。请注意,我的端口硬设置为 5433,而不是 5432。