Java连接MySQL数据库时出现通信链路失败异常的原因咨询
Java连接MySQL报CommunicationsException的原因排查
你遇到的com.mysql.cj.jdbc.exceptions.CommunicationsException属于连接环节异常,结合你的代码,先看最明显的错误,再逐一排查其他常见原因:
一、代码中的直接错误
你的连接URL格式有误:jdbc:mysql://localhost::3306/bankingsystem里localhost后面多了一个冒号,正确格式应为jdbc:mysql://localhost:3306/bankingsystem,双冒号会导致JDBC无法解析端口,直接引发连接失败。
另外你的main方法里创建Conn对象的代码被注释了,要去掉注释才能运行测试连接。
修正后的核心代码示例:
// 修正URL并添加SSL关闭参数(适配MySQL 8.0+) c=DriverManager.getConnection("jdbc:mysql://localhost:3306/bankingsystem?useSSL=false","root","password"); // main方法中打开注释 public static void main(String[] args) { Conn Conexiune =new Conn(); }
二、其他常见排查方向
- MySQL服务未启动:检查本地MySQL服务是否正常运行。Windows可在「服务」列表中查看,Linux执行
systemctl status mysql确认状态,服务未启动无法建立连接。 - 端口不匹配:确认MySQL配置的端口是3306,若修改过端口,URL需同步更新为对应端口号。
- 驱动版本不兼容:MySQL 8.0+必须使用
com.mysql.cj.jdbc.Driver(你的代码此处正确),但要确保mysql-connector-java驱动版本与MySQL版本匹配(如MySQL 8.0对应驱动8.0+);若为MySQL 5.x版本,需改用com.mysql.jdbc.Driver并对应5.x版本驱动。 - 防火墙/安全软件拦截:本地防火墙或杀毒软件可能阻止Java程序访问3306端口,可临时关闭防火墙测试,若能连接则给Java程序或3306端口添加白名单。
- 用户名/密码错误:虽然通常报
Access denied,但部分场景也会触发通信异常,确认root用户密码正确,且该用户拥有localhost的连接权限。 - 目标数据库不存在:确认
bankingsystem数据库已创建,连接时指定不存在的数据库会导致连接失败。 - SSL连接问题:MySQL 8.0+默认要求SSL连接,若未配置SSL,需在URL后追加
?useSSL=false关闭SSL验证。
内容的提问来源于stack exchange,提问作者Renato Pomparau
相关产品推荐
相关产品推荐

