SpringBoot应用部署到远程服务器连接远端PostgreSQL数据库报错求解决方案
PostgreSQL连接失败问题排查解决步骤
第一步:先验证服务器网络连通性
登录部署SpringBoot应用的远程服务器,执行以下命令测试到数据库的网络是否可达:# 替换为你实际的数据库IP和端口 telnet 1xx.1xx.xx.xx6 端口号 # 或者用nc命令 nc -zv 1xx.1xx.xx.xx6 端口号如果命令执行失败,说明是网络层面问题:检查数据库侧安全组/防火墙是否开放对应端口给应用服务器IP,确认数据库IP和端口填写正确。
第二步:修正配置文件格式错误
你当前配置中spring.datasource.url行末尾跟了# server address注释,SpringBoot读取properties配置时可能会将注释内容也识别为URL的一部分,导致地址无效。将注释移到单独一行即可:# server address spring.datasource.url=jdbc:postgresql://1xx.1xx.xx.xx6:xxxx/dbname第三步:检查PostgreSQL服务端访问配置
登录PostgreSQL所在服务器,检查两个配置文件:postgresql.conf中listen_addresses参数,确认配置为*或者包含应用服务器的IP,不能仅配置为127.0.0.1pg_hba.conf中添加应用服务器IP的访问规则,示例如下:
# 替换为实际应用服务器IP,加密方式根据数据库配置调整为md5或scram-sha-256 host all all 111.111.11.111/32 scram-sha-256修改配置后需要重启PostgreSQL服务生效。
第四步:验证驱动与数据库版本兼容性
你当前使用的postgresql驱动版本为42.2.22,如果你的PostgreSQL数据库版本为15及以上,低版本驱动对新的密码加密方式兼容存在问题,可将驱动版本升级到42.5.4以上后重新打包测试。第五步:定位具体根因
启动应用时添加调试参数打印PostgreSQL连接的详细日志,查看根异常信息:java -jar test-0.0.1-SNAPSHOT.jar --logging.level.org.postgresql=DEBUG若日志显示密码认证失败,核对配置的用户名密码是否正确;若显示连接超时,回到第一步排查网络策略。
也可以启动时直接强制传入数据库配置,排除配置加载优先级问题:java -jar test-0.0.1-SNAPSHOT.jar \ --spring.datasource.url=jdbc:postgresql://1xx.1xx.xx.xx6:xxxx/dbname \ --spring.datasource.username=实际用户名 \ --spring.datasource.password=实际密码
内容的提问来源于stack exchange,提问作者mat373
相关产品推荐
相关产品推荐

