我知道这是一个重复的问题,但他们的解决方案不起作用,
我正在做的是从我的本地 ubunut 机器连接到远程 Postgresql 数据库:
psql -h x.x.x.x -U username
但它给出了错误:
> psql: could not connect to server: Network is unreachable
Is the server running on host "x.x.x.x" and accepting
TCP/IP connections on port 5432?
我做了什么,
我更新了我的配置文件&PostgreSQL 配置文件文件并使用以下命令重新启动服务器:
/etc/init.d/postgresql restart
这说好的,重新启动
我从本地机器对远程 vps 进行了 NMAP 检查,显示以下输出:
root@host:~# nmap x.x.x.x -p 5432
Starting Nmap 5.21 ( http://nmap.org ) at 2015-11-19 15:49 IST
Nmap scan report for x.x.x.x
Host is up (0.16s latency).
PORT STATE SERVICE
5432/tcp filtered postgresql
输出:
# netstat -plnt |grep 5432
tcp 0 0 0.0.0.0:5432 0.0.0.0:* LISTEN 9167/postgres
tcp6 0 0 :::5432 :::* LISTEN 9167/postgres
我该如何解决该问题?
答案1
您没有提到在客户端和数据库服务器之间有防火墙,但我可以看到您有iptables
标签。
正如错误消息所说,您需要确保您可以从客户端访问服务器 xxxx,特别是 TCP 端口 5432(默认 postgresql 端口)。
如果您在数据库机器上使用 iptables,则可能需要添加如下规则:
-I INPUT -p tcp --dport 5432 -j ACCEPT
您可以通过添加 来通过源 IP 地址来限制此规则-s y.y.y.y
。
如果您处于受信任的网络中,您甚至可以禁用防火墙。