如何使用Java(JDBC)连接远程MySQL 通信链路失败报错怎么解决
排查解决步骤
- 检查MySQL服务绑定配置
Debian环境下MySQL/MariaDB默认仅允许本地连接,打开配置文件(通常路径为/etc/mysql/mysql.conf.d/mysqld.cnf或/etc/mysql/mariadb.conf.d/50-server.cnf),找到bind-address配置项:
如果值为127.0.0.1或::1,将其修改为0.0.0.0或直接注释该行,修改后执行systemctl restart mysql重启数据库服务生效。 - 验证网络连通性
本地Windows设备打开cmd/powershell执行端口连通性测试:
若测试失败,先确认Debian服务器防火墙已放行3306端口,可执行# 使用telnet测试 telnet xyz.de 3306 # 或者powershell专用测试命令 Test-NetConnection xyz.de -Port 3306ufw status查看ufw规则,若使用云服务器还需要同步确认云服务商安全组的入方向规则已放开3306端口。 - 修正JDBC URL格式错误
你提供的URL存在两处明显可优化的问题:- 问号后存在多余空格,会导致参数解析失败
- 可添加
useSSL=false参数关闭SSL校验,避免测试阶段SSL相关问题
修正后的URL参考:
String url = "jdbc:mysql://xyz.de:3306/xyz?useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=Europe/Berlin&useSSL=false"; - 确认数据库用户权限生效
登录Debian本地的MySQL服务,执行以下命令校验权限:-- 查看xyz用户的所有权限 SHOW GRANTS FOR 'xyz'@'%'; -- 查看所有xyz用户的主机配置,避免存在同名本地用户优先级更高导致匹配失败 SELECT user,host FROM mysql.user WHERE user='xyz'; -- 刷新权限确保配置生效 FLUSH PRIVILEGES; - 校验驱动版本适配性
确认本地Java项目导入的MySQL JDBC驱动版本与服务器MySQL大版本匹配:如果服务器运行的是MySQL 8.0+,需要使用8.x版本的mysql-connector-java驱动,不要使用5.x的旧版本驱动。
内容的提问来源于stack exchange,提问作者DeliaSama
相关产品推荐
相关产品推荐

