2014-10-31 66 views
2

我一直试图通过网络使Postgres可用,但迄今为止一直无法这样做。Postgresql的开放端口

据netstat的,Postgres的监听的正确的端口上:

#netstat -anltp | grep 5432 
tcp  0  0 127.0.0.1:5432   0.0.0.0:*    LISTEN  2385/postgres 

但是,当我试图从nmap的其他设备,端口似乎被关闭。

#nmap -p 5432 marvin 
Starting Nmap 6.40 (http://nmap.org) at 2014-10-31 10:31 CET 
Nmap scan report for marvin (*.*.*.*) 
Host is up (0.00048s latency). 
rDNS record for *.*.*.*: marvin.*.* 
PORT  STATE SERVICE 
5432/tcp closed postgresql 

我的猜测是,它必须做一些事情的事实,我使用主机名代替IP,但由于IP经常变化在这里每一个,我宁愿使用的主机名。

我已经设置了listen_addresses ='*',这是我在这里找到的另一个类似问题的解决方案,但无济于事。我也尝试了pg_hba.conf中的不同设置,但端口仍然关闭。

host all  all  .jarvis   trust 
host all  all  jarvis   trust 
host all  all  0.0.0.0/24  trust 

我也用过几个例子,我发现我的iptables,但没有运气那里。

Chain INPUT (policy ACCEPT) 
target  prot opt source    destination   
ACCEPT  tcp -- anywhere    anywhere    tcp dpt:postgresqlflags: FIN,SYN,RST,ACK/SYN 
ACCEPT  tcp -- anywhere    Marvin    tcp spts:1024:65535 dpt:postgresql state NEW,ESTABLISHED 
ACCEPT  tcp -- anywhere    anywhere    tcp dpt:postgresql 

Chain FORWARD (policy ACCEPT) 
target  prot opt source    destination   

Chain OUTPUT (policy ACCEPT) 
target  prot opt source    destination   
ACCEPT  tcp -- Marvin    anywhere    tcp spt:postgresql dpts:1024:65535 state ESTABLISHED 

最后,我试图通过telnet连接,没有运气或者

telnet marvin 5432 
Trying *.*.*.*... 
telnet: Unable to connect to remote host: Connection refusedo connect to the port 

然而,上有22

telnet marvin 22 
Trying *.*.*.*... 
Connected to marvin.*.*. 
Escape character is '^]'. 
SSH-2.0-OpenSSH_6.0p1 Debian-3ubuntu1 

谁能告诉我没有问题如果有某个地方的设置被误解或使用主机名存在问题?

回答

3

再次查看您的netstat输出。您只能在本地主机上收听(127.0.0.1)。检查你的配置文件并重新启动PostgreSQL。

+1

更具体地说,在postgresql.conf中,更改为'listen_addresses ='*'' – jishi 2014-10-31 12:17:23

+0

已经这样做了,就像我在原文中所说的那样。 – Herder 2014-11-04 13:15:50

+0

显然不是,否则netstat会说“0.0.0.0:5432”。所以 - 再次检查你的配置文件并重新启动postgres。 – 2014-11-04 13:59:01