postgresql端口closures以进行远程访问

我试图连接到一个Ubuntu服务器,我有根访问PostgreSQL数据库,但不知何故,我不能打开远程访问端口5432,只是本地。 当我在服务器上使用“nmap”命令(XXX.XXX.X.XX代表服务器的IP)时,会发生这种情况:

nmap -p 5432 localhost PORT STATE SERVICE 5432/tcp open postgresql nmap -p 5432 XXX.XXX.X.XX PORT STATE SERVICE 5432/tcp closed postgresql 

我已经编辑了文件“pg_hba.conf”和“postgresql.conf”,但是没有成功。

变化:

pg_hba.conf文件:

 # IPv4 local connections: host all all all md5 # IPv6 local connections: host all all all md5 

postgresql.conf文件:

 listen_addresses = '*' 

而当我尝试与pgAdmin III连接时,这就是它向我显示的内容:

服务器不听

无法连接到服务器:连接被拒绝(0x0000274D / 10061)服务器是否在主机“XXX.XXX.X.XX”上运行并接受端口5432上的TCP / IP连接?

我试图用“ufw”命令打开这个端口,但是它没有工作。

谁能帮我?

确保您的防火墙不阻止stream量。

将以下规则附加到您的iptables(将XXXX更改为您的服务器IP地址):

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

如果有效,请保存iptables并重新启动它:

 # apt-get install iptables-persistent # /etc/init.d/iptables restart 

如果您的networking上有外部防火墙,则应该允许连接。

安全注意事项:打开你的PostgreSQL端口到公共可能是一个安全问题。 您应该考虑将传入stream量限制为特定IP地址/范围,方法是将第一个iptables命令中的-s 0/0参数更改为-s XXXX/X