You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无法从客户端连接PostgreSQL:No route to host问题求助

解决PostgreSQL "No route to host" 连接问题

先指出你最明显的一个错误:你执行的连接命令psql -U postgres -h 10.0.0.121是在连接客户端自己的IP,但你的PostgreSQL服务器在10.0.0.104啊!先把命令改成正确的:

psql -U postgres -h 10.0.0.104

如果改完还是报错,咱们一步步排查:

1. 确认服务器上PostgreSQL服务正在运行

登录到服务器10.0.0.104,检查服务状态:

# 适用于systemd系统(Ubuntu 16.04+/CentOS 7+)
sudo systemctl status postgresql

# 老版本用service命令
sudo service postgresql status

如果显示服务未运行,先启动它:

sudo systemctl start postgresql
# 或者
sudo service postgresql start

2. 验证PostgreSQL是否监听了正确的地址和端口

修改postgresql.conf里的listen_addresses = '*'后,必须重启服务才会生效。在服务器上执行以下命令确认监听状态:

# 用ss命令(更现代的工具)
ss -tulpn | grep 5432

# 或者netstat
netstat -tulpn | grep 5432

正常情况下应该能看到0.0.0.0:5432或者*:5432的记录,要是只有127.0.0.1:5432,说明配置没生效,赶紧重启服务:

sudo systemctl restart postgresql

3. 检查服务器防火墙是否放行5432端口

No route to host大概率是防火墙挡住了端口,根据你的服务器系统来操作:

Ubuntu/Debian(ufw防火墙):

# 查看当前规则
sudo ufw status
# 如果没看到5432允许,添加规则
sudo ufw allow 5432/tcp
sudo ufw reload

CentOS/RHEL(firewalld防火墙):

# 查看当前开放的端口
sudo firewall-cmd --list-all
# 添加永久规则并重载
sudo firewall-cmd --add-port=5432/tcp --permanent
sudo firewall-cmd --reload

4. 测试客户端到服务器的网络连通性

在客户端10.0.0.121上先ping服务器,确认基础网络没问题:

ping 10.0.0.104

如果ping不通,说明是子网、路由或者交换机的问题,得先解决网络连通;如果ping通但还是连不上PostgreSQL,再测试端口:

# 用telnet
telnet 10.0.0.104 5432

# 或者netcat(nc)
nc -zv 10.0.0.104 5432

如果这些命令也失败,回到防火墙和PostgreSQL监听配置再检查一遍。

另外,你的pg_hba.conf配置host all all 10.0.0.121/32 md5是正确的,只要重启服务后就会生效,这个不用调整。


内容的提问来源于stack exchange,提问作者Muhammad Rahmatullah

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 06:54:33