pgAdmin3连接问题

16

我最近正在设置和运行一个带有VMware Workstation 8的Windows 2008 r2服务器。

我正在运行一个Centos 6.2虚拟Linux框,配备Postgresql 9.1。本地一切似乎都很好,我可以通过桥接网络连接连接到CentOS框。

我已经按照David Ghedini的步骤设置了Postgresql 9.1。所以我能够启动putty会话窗口,以root用户身份登录并启动psql shell,并作为postgres用户发出语句。我的问题是,我无法使用我的Windows 7客户端连接pgAdmin III。我已更新/var/lib/pgsql/9.1/data/postgresql.conf以启用listen_addresses '*'等。

有人能给我找到错误的提示吗?也确保了Windows服务器上的Windows防火墙已禁用。

pgAdmin III客户端报告;

'服务器不在监听'

服务器不接受连接:连接库报告

无法连接服务器:连接超时(0x0000274C/10060)。服务器是否在主机“192.168.1.26”上运行,并在端口5432上接受TCP/IP连接? 这是添加的pg_hba.conf文件条目:
#TYPE DATABASE   USER   ADDRESS          METHOD
host  all        all    192.168.1.0/24   trust

以下是添加的iptables文件条目:

-A INPUT -p tcp -s 0/0 --sport 1024:65535 -d 192.168.1.26 --dport 5432 -m state --state NEW,ESTABLISHED -j ACCEPT
-A OUTPUT -p tcp -s 192.168.1.26 --sport 5432 -d 0/0 --dport 1024:65535 -m state --state ESTABLISHED -j ACCEPT

你在更新配置文件后是否重启了PostgreSQL服务?此外,pg_hba.conf可能是导致问题的原因。这是我用于我的开发Postgres实例的副本。它非常宽松,但应该适合你的开发环境。 - swasheck
除此之外,请发布由pgAdminIII给出的错误。 - swasheck
嗯..该死,我本以为一定是pg_hba.conf主机条目的问题。我按照你的语法添加了一个主机all all all trust 条目,重新加载了配置文件,但仍然收到“服务器未监听”的消息。等待连接的时间开始困扰我了! - Jez
糟糕!那么问题很可能已经在AndrewSmith的第二个链接中得到解决。请检查VM上的IPTables/防火墙。 - swasheck
@Trip - 我的设置是一个物理的 Windows 7 客户端运行 pgAdmin,连接到在 Windows 2008 R2 服务器上运行的 VMware 托管的 Centos 盒子。这里没有 Mac! - Jez
显示剩余2条评论
8个回答

13

如果是pg_hba.conf文件的问题,我认为用户会收到不同的错误消息。 - kgrittn
Andrew,我已经按照提供的两个链接中的指南进行了操作,并更新了OP以显示这些条目。我认为iptables条目会提供解决方案,但不幸的是,我仍然无法连接pgAdmin III并收到相同的错误提示。 - Jez
1
好的,我现在已经连接上了!哇哦!太棒了。我重新启动了服务,然后就能够连接了。非常感谢,我相信唯一未解决的问题就是iptables配置。无论如何,非常感谢。 - Jez

1
可能是防火墙问题,请通过以下方式检查它:

systemctl status firewalld.service

你可以通过以下方式简单地禁用它:
systemctl stop firewalld.service
systemctl disable firewalld.service

1

确保PostgreSQL服务器被防火墙允许通过:

在服务器上,进入

控制面板 > 系统和安全 > Windows防火墙 > 允许应用程序通过Windows防火墙

浏览允许的应用程序和功能,确保“PostgreSQL服务器”已选中。


它是在CentOS上。 - Snowbases

1

我有同样的问题。我禁用了所有第三方杀毒软件和防火墙,然后重新安装了PostgreSQL,现在它可以正常工作了...:)


0

我有和你一样的问题:

无法连接到服务器:连接超时(0x0000274C/10060)。服务器是否在主机“192.168.1.26”上运行,并接受端口5432上的TCP/IP连接?

也许你需要将你的反向IP设置到白名单中:
26.1.168.192


0

你还应该在防火墙上允许端口5432。

例如,在CentOS 8上:

sudo firewall-cmd --zone = public --add-port = 5432 / tcp --permanent

0
服务器是否在主机“192.168.1.26”上运行,并接受端口5432上的TCP/IP连接?
请检查服务器是否具有该IP地址。检查是否有正在运行的postgres进程。使用netstat确认服务器是否在端口5432上监听。

是的,服务器肯定在那个IP上,因为我可以通过ssh连接并登录。正如最初所述,我还通过以postgres用户身份在psql shell中执行命令来验证了postgres正在运行。有趣的是,当我运行netstat命令时,似乎没有看到任何关于端口5432的提及。 - Jez
2
使用 psql 登录并输入 show port;show listen_addresses;。也许有些设置被覆盖了,或者需要重新启动服务器。此外,虚拟机是否实现了某种防火墙? - kgrittn

0

除了以上的好答案之外,当我实施了所有防火墙规则和配置文件更改后,它仍然无法连接到我的主机IP地址。然后我意识到我在安装了pgadmin本地主机上,我的postgres数据库也安装在这个主机上。我不需要使用外部IP地址来连接主机,我只需要在pgadmin连接过程中连接到“localhost”。非常令人沮丧但很有道理。所以,如果你

  • 从与您的postgres数据库相同的服务器上托管pgadmin
  • 已排除防火墙不会阻止您的方式
  • 已排除任何安全组不会阻止您的方式
  • 已经足够地调整了您的配置文件pg_hba.conf和postgresql.conf

那么也许...尝试连接到“localhost”或“127.0.0.1”。

值得一试吧!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接