Oracle Cloud Linux服务器远程连接PSQL失败问题求助
PostgreSQL远程连接Oracle Cloud服务器失败排查方案
问题概述
在Oracle Cloud Ubuntu服务器部署PostgreSQL 15.2后,本地连接正常,但执行远程连接命令:
psql -h 129.213.17.88 -p 5432 -d breedingdb -U postgres
报错:
psql: error: connection to server at "129.213.17.88", port 5432 failed: No route to host Is the server running on that host and accepting TCP/IP connections?
已完成以下配置:
- 修改
postgresql.conf设置listen_addresses = '*'、port = 5432并重启服务 - 修改
pg_hba.conf添加host all all 0.0.0.0/0 md5规则 - 配置Oracle Cloud入站规则
netstat显示PostgreSQL已监听0.0.0.0:5432和:::5432- 公网IP可ping通,但
nmap扫描显示5432端口为closed
解决步骤
1. 检查服务器本地防火墙规则
Oracle Cloud安全列表之外,服务器本地的ufw或iptables可能拦截了5432端口:
- 查看ufw状态:
如果状态为sudo ufw statusactive,添加并生效5432端口规则:sudo ufw allow 5432/tcp sudo ufw reload - 若使用iptables,检查现有规则:
添加允许规则并保存:sudo iptables -L -nsudo iptables -A INPUT -p tcp --dport 5432 -j ACCEPT sudo netfilter-persistent save
2. 验证Oracle Cloud安全列表配置
确认安全列表的入站规则完全正确:
- 规则需包含:协议
TCP,端口范围5432,源地址0.0.0.0/0(或指定你的本地IP),动作允许 - 注意:安全列表是绑定到子网的,需确认服务器所在子网的安全列表已配置该规则,而非其他子网
3. 确认公网IP与实例的绑定关系
检查服务器的公网IP是否正确关联:
- 在服务器上执行命令确认当前公网IP:
curl ifconfig.me - 登录Oracle Cloud控制台,查看实例详情,确认弹性IP已成功附加到该服务器实例
4. 换工具测试端口连通性
用telnet或nc替代nmap测试,避免扫描工具的误判:
- telnet测试:
telnet 129.213.17.88 5432 - nc测试:
nc -zv 129.213.17.88 5432
如果仍不通,尝试切换本地网络(如手机热点)排查是否是本地网络的防火墙或运营商屏蔽问题
5. 检查PostgreSQL服务日志与监听进程
确认PostgreSQL服务正常运行且配置生效:
- 查看监听进程详情,确保是postgres进程在监听5432端口:
ss -tulpn | grep postgres - 查看PostgreSQL日志,检查重启后的状态与报错信息:
sudo tail -n 20 /var/log/postgresql/postgresql-15-main.log
内容的提问来源于stack exchange,提问作者UAS Hub
相关产品推荐
相关产品推荐

