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

Spring Boot应用连接远程MySQL服务器遇连接拒绝问题求助

问题:Spring Boot应用连接远程MySQL数据库提示“连接被拒绝”

错误信息

Caused by: com.mysql.cj.exceptions.CJCommunicationsException: Communications link failure

The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77)
    at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499)
    at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:480)
    at com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:61)
    at com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:105)
    at com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:151)
    at com.mysql.cj.exceptions.ExceptionFactory.createCommunicationsException(ExceptionFactory.java:167)
    at com.mysql.cj.protocol.a.NativeSocketConnection.connect(NativeSocketConnection.java:91)
    at com.mysql.cj.NativeSession.connect(NativeSession.java:144)
    at com.mysql.cj.jdbc.ConnectionImpl.connectWithRetries(ConnectionImpl.java:850)
    ... 50 more
Caused by: java.net.ConnectException: Connection refused: no further information
    at java.base/sun.nio.ch.Net.pollConnect(Native Method)
    at java.base/sun.nio.ch.Net.pollConnectNow(Net.java:672)
    at java.base/sun.nio.ch.NioSocketImpl.timedFinishConnect(NioSocketImpl.java:549)
    at java.base/sun.nio.ch.NioSocketImpl.connect(NioSocketImpl.java:597)
    at java.base/java.net.SocksSocketImpl.connect(SocksSocketImpl.java:327)
    at java.base/java.net.Socket.connect(Socket.java:633)
    at com.mysql.cj.protocol.StandardSocketFactory.connect(StandardSocketFactory.java:155)
    at com.mysql.cj.protocol.a.NativeSocketConnection.connect(NativeSocketConnection.java:65)
    ... 52 more

情况说明

我能用相同的账号密码通过MySQL Workbench从本地电脑访问该远程数据库,但Spring Boot应用连接时却提示连接被拒绝。

已尝试的解决步骤

  • 创建了允许远程访问的数据库用户remoteUser@%
  • 给该用户授予所有数据库的全部权限
  • 执行了权限刷新操作
  • 用sudo ufw allow 3308命令允许端口3308的入站流量
  • 修改mysqld.cnf文件,注释了绑定地址配置:
#commented both of the following lines
# bind-address      = 127.0.0.1
# mysqlx-bind-address   = 127.0.0.1
  • 重启MySQL服务器:sudo service mysql restart
  • 更新Spring Boot应用配置文件的连接信息:
spring.datasource.url=jdbc:mysql://server_ip:3308/db_name
 spring.datasource.username=remoteUser
 spring.datasource.password=remotePassword
  • 重启Spring Boot应用

问题仍未解决,求帮助。


排查方向与解决方案

1. 确认MySQL实际监听的端口

你配置里用了3308,但默认MySQL端口是3306,先查远程服务器上MySQL到底在监听哪个端口:

  • 执行命令:sudo netstat -tulpn | grep mysql
  • 如果输出显示监听3306,把Spring Boot配置里的端口改成3306再试

2. 检查服务器防火墙规则优先级

虽然加了允许3308的规则,但可能之前的拒绝规则优先级更高,查看完整UFW规则:

  • 执行:sudo ufw status numbered
  • 如果3308的允许规则排在后面,调整顺序:sudo ufw insert 1 allow 3308,然后重启UFW:sudo ufw reload

3. 验证Spring Boot所在机器的网络连通性

如果Spring Boot不是在你本地电脑运行(比如部署在其他服务器/容器),得确认这台机器能连到远程MySQL:

  • 测试端口连通:telnet server_ip 3308
  • 如果telnet失败,说明中间有防火墙(比如云服务商的安全组、内网防火墙)挡了,得开放对应端口

4. 确认MySQL用户权限是否真的生效

手动验证用户权限:

  • 用Workbench登录后执行:SELECT user, host FROM mysql.user WHERE user='remoteUser';,确保host是%
  • 再执行:SHOW GRANTS FOR 'remoteUser'@'%';,确认权限包含ALL PRIVILEGES ON *.*

5. 检查MySQL配置是否生效

修改配置后重启了服务,但再确认绑定地址:

  • 执行:mysql -e "SHOW VARIABLES LIKE 'bind_address';"
  • 如果输出还是127.0.0.1,说明你改的配置文件不对,有些系统的MySQL配置在/etc/mysql/my.cnf或者/etc/mysql/mysql.conf.d下的其他文件里,找到正确的配置文件修改后再重启服务

6. 修正Spring Boot配置细节

  • 去掉配置项前面的空格,比如 spring.datasource.url改成spring.datasource.url,确保配置格式正确
  • 确认server_ip是远程服务器的公网IP或者Spring Boot能访问的内网IP,别用localhost/127.0.0.1
  • 可以给URL加额外参数避免连接问题:
spring.datasource.url=jdbc:mysql://server_ip:3308/db_name?useSSL=false&serverTimezone=UTC
spring.datasource.username=remoteUser
spring.datasource.password=remotePassword

内容的提问来源于stack exchange,提问作者Sayed Hussainullah Sadat

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 02:08:12