PostgreSQL服务器不听:尝试了一切并失败了

时间:2013-12-15 23:57:17

标签: postgresql centos

当尝试使用pgAdmin 1.16.1从远程Windows服务器连接到PostgreSQL时,我得到了可怕的服务器没有收听'消息'无法连接到服务器:连接超时(0x0000274C / 10060)服务器是否在主机上运行" xxx.xx.xxx.xx"并接受端口5432'上的TCP / IP连接。

我在CentOS 6.4上运行PostgreSQL 9.3。这是我到目前为止所尝试的内容:

  • 我可以使用psql --username = postgres在本地访问数据库。数据库在那里,它正在运行,我可以查询它
  • 在postgresql.conf中,我已经设置了

    listen_addresses = '*'
    port = 5432 
    
  • 在pg_hba.conf中,我正在尝试访问数据库的服务器列为:

    host    all             all             xxx.xx.xxx.0/24         md5
    
  • SELinux已关闭(getenforce获得回复Disabled
  • 以防万一我将端口5432添加到IPTables

    iptables -A INPUT -p tcp -m tcp --dport 5432 -j ACCEPT
    
  • 我已经使用psql进入postgresql并设置了密码(虽然我确信它已经设置正确)

    ALTER USER postgres WITH PASSWORD '*************';
    
  • 键入netstat -an会将这些引用提供给端口5432(不确定它们是否相关):

    Proto Recv-Q Send-Q Local Address               Foreign Address             State      
    tcp        0      0 0.0.0.0:5432                0.0.0.0:*                   LISTEN      
    
    tcp        0      0 :::5432                     :::*                        LISTEN      
    
    Active UNIX domain sockets (servers and established)
    Proto RefCnt Flags       Type       State         I-Node Path
    unix  2      [ ACC ]     STREAM     LISTENING     677454 /tmp/.s.PGSQL.5432
    
  • 我可以从远程服务器ping到数据库服务器

  • 使用相同的pgAdmin安装
  • 连接到同一台远程服务器上运行PostgreSQL 9.1的另一台服务器没问题

我很难过。有没有人知道更多可能是错的?是的,我确实记得在更改配置文件后重启服务器。我相信我已经阅读了关于这个主题的所有其他帖子。

1 个答案:

答案 0 :(得分:2)

也许你忘了添加OUTPUT规则?

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

xx.xx.xx.xx - your server IP