我目前有一个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
所以服务器正在运行并可以访问。
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_addresses将localhost ,所以它不接受来自外部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侦听服务器上的“*”或特定接口。