idea/datagrip连接MySQL数据库失败:[08S01]Communications link failure The last packet sent successfully to...

问题描述

使用idea和datagrip连接云服务器上部署的MySQL数据库失败,使用的MySQL版本是8.0.30,报错:

[08S01]
    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.
Communications link failure

我们自己部署MySQL服务器时可能会遇到各种各样的问题,所以这篇文推排查适合自己搭建MySQL的同学,耐心一步步排查,应该都会解决。

问题排查及分析

1.检查mysql驱动

由于idea和datagrip是Java编写的,所以需要使用Java驱动包。检查与mysql版本匹配的驱动包,我这里使用的是8.0.30版本,因为可以向下兼容,所以驱动包应该只高不低。

注意⚠️:我导入的是maven本地仓库中下载的驱动包,所以如果清空maven本地仓库缓存包的话这里也会被清除,最好单独放在一个稳定的路径下。

2.如果MySQL版本在8.0.13以后,注意修改useSSL=false

MySQL驱动在8.0.13以后默认开启了SSL,即useSSL=true,所以做以下修改

1.连接串后加&useSSL=true

2.驱动里的配置也修改为false

3.数据源配置也改为false

3.检查云服务器防火墙

主流云服务商阿里云或者腾讯云等,在安全配置中开放端口,一般都是3306。

4.检查MySQL配置文件

1.修改my.cnf文件中 bind-address

bind-address默认为0.0.0.0,即监听所有网络接口。如果想限制某些IP访问,就修改这个值。如果是127.0.0.1则只接收本地连接。云服务器这里修改为:

bind-address="0.0.0.0" 

修改完记得重启MySQL。

2.如果有skip-networking这个配置,就注释掉它

如果有了这个配置就只能本地访问,不能远程访问。注释掉方式是在行前加#

5.给用户授权

新创建的用户需要给用户授权,否则访问不到。

#创建用户
CREATE USER 'your_user'@'your_ip_address' IDENTIFIED BY 'your_password';
#授权
GRANT ALL ON *.* TO 'your_user'@'your_ip_address';
FLUSH PRIVILEGES;

总结

以上步骤通常问题都能解决,认真一步步检查,通常最容易出现的问题就是自己以为检查过的地方其实被忽略了。我在云服务器防火墙这里栽了跟头,因为以前只给指定的其他服务器开了白名单,后来自己在本地连接的时候忘了这件事,以为防火墙没问题,又排查了好几个小时,非常浪费时间。总之还是细心点,千万不能想当然。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值