Spring Boot无法连接Amazon EC2上的PostgreSQL数据库求助
解决EC2上PostgreSQL远程JDBC连接拒绝问题
核心问题定位
你遇到的「Failed to obtain JDBC Connection」本质是PostgreSQL仅监听本地回环地址(127.0.0.1),拒绝所有远程连接请求。以下是分步修复方案:
1. 修改PostgreSQL监听地址配置
- PostgreSQL 15在Amazon Linux 2023下的配置文件目录为
/var/lib/pgsql/15/data/ - 编辑
postgresql.conf文件,找到listen_addresses参数,修改为:
注意移除参数前的注释符号listen_addresses = '*' # 允许监听所有可用IP,也可指定EC2的公网/私有IP#
2. 配置远程访问控制规则
- 同目录下编辑
pg_hba.conf文件,添加允许远程连接的规则:- 生产环境推荐仅允许特定IP访问:
host dbname postgres 你的客户端IP/32 scram-sha-256 - 测试场景可临时允许所有IP访问:
host all all 0.0.0.0/0 scram-sha-256
注:PostgreSQL 15默认使用
scram-sha-256认证方式,若你的数据库用户使用md5认证,需替换对应字段 - 生产环境推荐仅允许特定IP访问:
3. 重启PostgreSQL服务
执行命令重启服务使配置生效:
sudo systemctl restart postgresql-15
4. 验证监听状态
再次执行命令检查端口监听情况:
netstat -tulpn | grep 5432
此时应输出类似0.0.0.0:5432的监听记录,且带有PostgreSQL进程的PID。
额外验证项
- EC2安全组:确认入站规则中5432端口的源地址包含你的客户端IP或允许的范围
- EC2本地防火墙:若firewalld启用,需开放端口:
sudo firewall-cmd --add-port=5432/tcp --permanent sudo firewall-cmd --reload
完成以上步骤后,重新测试JDBC连接即可解决问题。
内容的提问来源于stack exchange,提问作者Amit
相关产品推荐
相关产品推荐

