在 Ubuntu 12.04 上,我安装了 pg 和 pgadmin。
我可以访问本地主机/phppgadmin使用浏览器。
我也可以这样做:IP/phppgadmin。
但是,我无法使用该 IP 号码通过 pgadmin 连接到 pg。
它报告说服务器没有监听。
对此有什么想法吗?
答案1
PostgreSQL 默认只监听本地 UNIX 套接字。要启用 TCP/IP 端点,请在 postgresql.conf 文件中取消注释:
listen_addresses = '*'
其中“*”表示监听所有接口。或者,如果您只想监听特定 IP,请在此处输入您的 IP 号码。
http://www.postgresql.org/docs/9.1/static/runtime-config-connection.html#GUC-LISTEN-ADDRESSES
答案2
您从 PGAdmin 收到的错误消息是什么?日志中有什么内容(/var/log/postgresql.log
或类似内容)吗?
我猜你没有在你的pg_hba.conf
,因为 PostgreSQL 默认只允许本地用户通过 unix-sockets 连接,而不是你想要的 TCP。你可能需要类似
host all all 0.0.0.0 pam
或者
hostssl all all 0.0.0.0 md5
在pg_hba.conf
——阅读上面的链接以获得正确的文档:)
答案3
感谢帮助我缩小问题范围的不同用户。实际上存在多个问题。我在这里概述了它们作为完整的答案,希望其他人可以受益。
就像 RJS 所说的那样,我必须设置 listen_addresses 以接受多个 IP。最初我这样做了,但后来我意识到该行前面有一个 #,这意味着它已被注释。所以我删除了注释。
即使停止 PG 服务器后,
pg_lsclusters
仍显示有一个服务正在运行。因此我无法重新启动它,因为它报告说它已在运行。然后通过使用
ps
我发现一个名为的相关程序pgpool
正在使用相同的端口,它不会让默认5432PG 使用的端口。所以我使用 从终端停止了此操作sudo pgpool stop
。然后我重新启动了 postgres 服务器,一切正常!
当我寻找答案时,一位志愿者告诉我铑蟾蜍在 IRC (#postgresql) 上,我当时所做的工作不需要池化。有人问我为什么要安装它。奇怪的是,我从来没有安装过它。也许 pgpool 是作为某种附加功能安装的。
另一个问题是我无法让 pgadmin 在 Windows 上启动并正确连接。缺少 libpq.dll。显然(您会在 stackoverflow 上找到另一篇关于此问题的帖子),该文件在 Win XP 的几个地方。因此,我将所有的 postgres DLL 文件复制到 Windows/System32 并修复了这个问题。
就是这样!希望这能有所帮助。