我怎样才能确定PostgreSQL的端口没有根,并使其监听端口?

我目前有一个Python脚本,需要从PostgreSQL数据库中获取一些数据。 它目前工作正常,但我必须将脚本移动到另一台服务器B PostgreSQL数据库将保留在服务器A

所以我的Python脚本需要从连接到服务器A服务器B访问PostgreSQL数据库。

我已经尝试添加host=servera.my.url.de但给了我

 could not connect to server: Connection refused Is the server running on host "servera.my.url.de" (141.X.YZ.AB) and accepting TCP/IP connections on port 5432? 

那里的服务器?

 ping servera.my.url.de PING servera.my.url.de (141.X.YZ.AB) 56(84) bytes of data. 64 bytes from XXXXX (141.X.YZ.AB): icmp_req=1 ttl=58 time=3.76 ms 64 bytes from XXXXX (141.X.YZ.AB): icmp_req=2 ttl=58 time=4.07 ms 64 bytes from XXXXX (141.X.YZ.AB): icmp_req=3 ttl=58 time=5.01 ms ^C --- servera.my.url.de ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2001ms rtt min/avg/max/mdev = 3.768/4.287/5.014/0.529 ms 

所以服务器正在运行并可以访问。

我的Python脚本是这个问题吗?

 psql -h servera.my.url.de -p 5930 -c "select 1" psql: could not connect to server: Connection refused Is the server running on host "servera.my.url.de" (141.X.YZ.AB) and accepting TCP/IP connections on port 5930? 

 psql -h servera.my.url.de -p 5932 -U myusername -W -c "select 1" Password for user myusername: psql: could not connect to server: Connection refused Is the server running on host "servera.my.url.de" (141.X.YZ.AB) and accepting TCP/IP connections on port 5932? 

端口扫描

 $ nmap -p 5000-6000 -sT servera.my.url.de Starting Nmap 6.00 ( http://nmap.org ) at 2014-02-05 10:40 CET Nmap scan report for servera.my.url.de (141.X.YZ.AB) Host is up (0.054s latency). rDNS record for 141.X.YZ.AB: XXXXXX Not shown: 992 closed ports PORT STATE SERVICE 5000/tcp filtered upnp 5025/tcp filtered unknown 5190/tcp filtered aol 5222/tcp filtered xmpp-client 5554/tcp filtered sgi-esphttp 5555/tcp filtered freeciv 5900/tcp filtered vnc 5901/tcp filtered vnc-1 6000/tcp filtered X11 

有趣的是,freeciv正在运行…

当我使端口范围更高时,我得到不同的结果:

 $ nmap -p 1000-6000 -sT servera.my.url.de Starting Nmap 6.00 ( http://nmap.org ) at 2014-02-05 10:40 CET Nmap scan report for servera.my.url.de (141.X.YZ.AB) Host is up (0.054s latency). rDNS record for 141.X.YZ.AB: XXXXXX Not shown: 4868 closed ports, 130 filtered ports PORT STATE SERVICE 3000/tcp open ppp 4443/tcp open pharos 4444/tcp open krb524 

端口5025可以是PostgreSQL吗?

其他尝试

 $ ps aux | grep postgres | grep -v 'postgres:' postgres 28928 0.0 0.0 90124 820 ? s 2013 0:59 /usr/lib/postgresql91/bin/postgres -D /path/pgsql/data [my command] $ lsof -p 28928 [does not return anything, but does not quit] 

在PostgreSQL中我input了SHOW port ,但是它什么也没有返回。 这是否意味着PostgreSQL不在监听任何端口? 我怎样才能听它?

它是在/path/pgsql/data吗? (我目前无法访问,但我可以问。)

我能做些什么来弄清postgreSql正在监听的端口(或者它是否在监听)? 我怎样才能让它听一个端口(或更改端口)? 我在这台机器上没有root权限,但是我可以在服务器A上用SSHlogin。

我确实看到确定PostgreSQL的端口,并尝试从那里的一切:

  • netstat需要root权限
  • lsof不起作用(我不知道什么是错误的服务器上…在我的机器上,它工作正常)
  • 似乎没有安装pg_lsclusters

如果您可以从原始机器连接到PostgreSQL,您可以看到它正在监听的端口:

 SHOW port; 

和什么地址(ES):

 SHOW listen_addresses; 

在猜测我会说listen_addresseslocalhost ,所以它不接受来自外部networking接口的TCP / IP连接。

确认PostgreSQL正在侦听的用法:

 netstat -ltnp 

另一种可能性是数据库主机上的networking防火墙不能连接。 tcptraceroute从远程主机到端口,看看结果是什么。

首先,我们不能确定它是在5555上监听的freeciv。Nmap使用一个名为nmap-services的文件来列出每个端口的公共应用程序(如果端口是在IANA上注册的,那么通常是为那个应用程序注册的港口)。 但是,你已经注意到,使用其他端口来完成任何服务是完全可能的。

如果使用-sV选项运行nmap,它实际上会和端口通信,并尝试使用不同的协议来查看哪一个匹配。 这当然需要比使用sT运行更长的时间,并且可能触发入侵检测警报(如果有的话)。

在这个特殊情况下,我打赌它正在使用5555端口,因为数据库服务器不可能运行freeciv,而且人们通常使用像5555,3333,6666这样的portnumer。如果我是你,我会开始做pgsql -p 5555 ,如果这不起作用,请做nmap -sV找出它是哪个端口。

(当然,这根本不是技术问题,而是社会问题,你的数据库pipe理员应该告诉你使用什么端口,否则,你的老板应该让他们这样做,但是我也有在nmap更快,更可靠的地方……)

lsof只适用于运行它的用户已经启动的进程(root可以看到全部),这就是为什么它不显示postgresql的端口。

postgresql的默认端口是5432,但是因为show port在你的情况下没有显示任何东西,所以我猜想,在postgresql.conf中,listen_address是这样设置的:

listen_address =''

或者守护进程正在运行“-c”“

您需要更改configuration,以便listen_address侦听服务器上的“*”或特定接口。