Postgresql9.1突然无法连接到服务器:没有到主机的路由

时间:2012-06-25 03:58:30

标签: postgresql networking

这个问题发生在昨晚我使用Adempiere的时候。我的adempiere服务器崩溃,它暗示没有数据库,这一切都突然发生,我不知道为什么。

所以我检查了netstat -nlp | grep 5432,它显示如下

tcp        0      0 0.0.0.0:5432            0.0.0.0:*               LISTEN      -               
tcp6       0      0 :::5432                 :::*                    LISTEN      -               
unix  2      [ ACC ]     STREAM     LISTENING     150917   -                   /var/run/postgresql/.s.PGSQL.5432

我尝试psql -U postgres -h localhost,它连接成功,但是当我尝试psql -U postgres -h 192.168.1.103时,它连接失败,显示如下:

psql: could not connect to server: No route to host
Is the server running on host "192.168.1.103" and accepting
TCP/IP connections on port 5432?

然后我检查了pg_hba.conf和postgresql.conf,它们是对的,如下所示:

host all all 192.168.1.0/24 md5
listen_addresses='*'

所以我认为我的配置是正确的,我之前已成功连接,现在赔率无法连接,有人可以帮助我吗,谢谢?

3 个答案:

答案 0 :(得分:1)

“无主机路由”意味着可能存在网络问题,首先是ping 192.168.1.103; 如果它工作,比“telnet 192.168.1.103 5432”查看端口是否正常。

这不是pg_hba问题。

答案 1 :(得分:0)

我在Centos 7上运行POstgres 9.5并遇到了同样的问题。从客户端计算机,我可以ping并telnet到端口22.然后我从客户端计算机执行telnet到端口5432并在下面出现错误。

[pegusr@test ~]$ telnet  192.168.xx.x1 5432
Trying 192.168.56.111...
telnet: connect to address 192.168.xx.1x: No route to host

由于这是一个测试环境,我刚刚在数据库服务器上禁用了firewalld,即

systemctl stop firewalld

从那时起它就起作用了。对于生产环境,请要求您的系统管理员将客户端计算机上的防火墙规则添加到数据库服务器的端口543x中。

希望有所帮助!

答案 2 :(得分:0)

您可能需要运行:

 firewall-cmd --add-service=postgresql --permanent

这允许通过Redhat \ CentOS中的OS防火墙为PostgreSQL默认端口5432进行传入连接。

参考https://serverfault.com/a/789015/518039