我试图连接到一个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