Azure PostgreSQL连接超时:Spring Boot与Dbeaver无法连接
解决Azure PostgreSQL连接超时问题
从错误栈底层的java.net.SocketTimeoutException: connect timed out可以明确,这是网络层面的连接失败,和账号密码、JDBC语法错误无关(如果是认证问题会有明确的PSQLException提示)。下面是针对性的排查和解决步骤:
1. 检查Azure PostgreSQL防火墙规则
- 登录Azure门户找到你的PostgreSQL服务器,进入「连接安全」页面
- 确认已将当前客户端/应用服务器的公网IP添加到防火墙允许列表里(可以临时打开「允许Azure服务和资源访问此服务器」做测试,但生产环境别一直开着)
- 核对IP范围是否正确,别写错子网或单个IP地址
2. 验证服务器地址和端口
- 连接时必须用Azure提供的完全限定域名,格式是
<服务器名>.postgres.database.azure.com,别用私有IP或者内部地址 - 默认端口是
5432,如果修改过服务器端口,连接配置里的端口必须对应
3. 测试网络连通性
- 在客户端或应用服务器上执行
ping <服务器名>.postgres.database.azure.com,确认域名能解析到正确的Azure公网IP - 用
telnet <服务器名>.postgres.database.azure.com 5432或nc -zv <服务器名>.postgres.database.azure.com 5432测试端口连通性,如果超时或被拒绝,说明网络链路有问题
4. 核对Spring Boot连接配置
确保application.properties/application.yml里的配置符合Azure要求:
spring.datasource.url=jdbc:postgresql://<服务器名>.postgres.database.azure.com:5432/<数据库名>?sslmode=require spring.datasource.username=<用户名>@<服务器名> spring.datasource.password=<你的密码> spring.jpa.hibernate.ddl-auto=update
重点:Azure PostgreSQL的用户名必须是用户名@服务器名的格式;必须加sslmode=require,否则会被Azure拒绝连接
5. 排查内网代理/防火墙限制
- 如果你的机器在企业内网,检查公司防火墙或代理是否阻断了5432端口的出站请求
- 换个网络(比如手机热点)测试连接,排除内网限制的可能
内容的提问来源于stack exchange,提问作者PAA
相关产品推荐
相关产品推荐

