无法使用 IP + pgadmin 连接到本地计算机上的 postgresql

无法使用 IP + pgadmin 连接到本地计算机上的 postgresql

在 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

感谢帮助我缩小问题范围的不同用户。实际上存在多个问题。我在这里概述了它们作为完整的答案,希望其他人可以受益。

  1. 就像 RJS 所说的那样,我必须设置 listen_addresses 以接受多个 IP。最初我这样做了,但后来我意识到该行前面有一个 #,这意味着它已被注释。所以我删除了注释。

  2. 即使停止 PG 服务器后,pg_lsclusters仍显示有一个服务正在运行。因此我无法重新启动它,因为它报告说它已在运行。

  3. 然后通过使用ps我发现一个名为的相关程序pgpool正在使用相同的端口,它不会让默认5432PG 使用的端口。所以我使用 从终端停止了此操作sudo pgpool stop

  4. 然后我重新启动了 postgres 服务器,一切正常!

    当我寻找答案时,一位志愿者告诉我铑蟾蜍在 IRC (#postgresql) 上,我当时所做的工作不需要池化。有人问我为什么要安装它。奇怪的是,我从来没有安装过它。也许 pgpool 是作为某种附加功能安装的。

  5. 另一个问题是我无法让 pgadmin 在 Windows 上启动并正确连接。缺少 libpq.dll。显然(您会在 stackoverflow 上找到另一篇关于此问题的帖子),该文件在 Win XP 的几个地方。因此,我将所有的 postgres DLL 文件复制到 Windows/System32 并修复了这个问题。

就是这样!希望这能有所帮助。

相关内容