Idea Java项目连接MySQL报错mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure问题

文章描述了在启动项目时遇到的MySQL连接错误,通过禁用SSL和设置服务器时区为UTC来解决问题的过程。作者提到在MySQL5.7及以上版本中,如果useSSL默认为true,可能需要将其设置为false以解决SSL握手异常。
摘要由CSDN通过智能技术生成

问题

这个问题就是在启动项目时,根据配置MySQL的连接信息,连接数据库并检查没有该数据库需要创建的功能,不过在启动后报错:

com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure
The driver has not received any packets from the server.
javax.net.ssl.SSLHandshakeException: No appropriate protocol (protocol is disabled or cipher suites are inappropriate)

详细报错如图:
在这里插入图片描述

报错的代码位置是获取尝试建立到给定数据库URL的连接:

 Connection con= DriverManager.getConnection(connectUrl, use, pswd);

解决方法

如上的最好报错 javax.net.ssl.SSLHandshakeException: No appropriate protocol (protocol is disabled or cipher suites are inappropriate)
就是协议被禁用或密码套件不合适给了很好的提示,这里直接尝试禁用useSSL(useSSL=false),即将连接的Url改为:

String connectUrl = "jdbc:mysql://" + host + ":" + port+"?useSSL=false";

如下是mysql ssl相关的说明:
SSL(Secure Sockets Layer 安全套接字协议),在mysql进行连接的时候,如果mysql的版本是5.7之后的版本必须要加上useSSL=false,mysql5.7以及之前的版本则不用进行添加useSSL=false,会默认为false,一般情况下都是使用useSSL=false,尤其是在将项目部署到linux上时,一定要使用useSSL=false!!!,useSSL=true是进行安全验证,一般通过证书或者令牌什么的,useSSL=false就是通过账号密码进行连接,通常使用useSSL=false!!!

运行后上面的错误消失了,而是报时区相关的错误:
在这里插入图片描述

java.sql.SQLException: The server time zone value ‘***’ is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the serverTimezone configuration property) to use a more specifc time zone value if you want to utilize time zone support.at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:129)。

网上的说法是设置全局时区:

set global time_zone =+8:00;

我操作后也无效的。

最后也是修改连接mysql的Url:

String connectUrl = "jdbc:mysql://" + host + ":" + port+"?useSSL=false&serverTimezone=UTC";

就是数据库连接改为使用UTC时区(世界标准时间)。

  • 19
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

十幺卜入

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值