关于使用DataGrip远程连接MySQL8失败的问题:The last packet sent successfully to the server was 0 milliseconds ago.

关于使用DataGrip远程连接MySQL8失败的问题:The last packet sent successfully to the server was 0 milliseconds ago.

先说结论:我的解决方案是:修改了/etc/mysql/mysql.conf.d/mysqld.cnf 里面的 bind-address为0.0.0.0 。

强调一下哦,我的解决方案只适用于特定情况。具体内容和其他解决方案可以看下面

各种环境说明

阿里云的ECS Ubuntu22,最新的MySQL8,确认端口已经打开,改了root的host为%,在ECS上localhost可以正常进MySQL,但是在本地DG上始终连不上,本地检查了一下,服务器ping通,端口也正常。

其他常见问题和解决方案

1·修改bind-address = 127.0.0.1 为 bind-address = 0.0.0.0 使非本地网络可以访问数据库 (注意:不同发行版和各种版本均会影响config文件位置,自行寻找;比如my.cnf,但是我的my.cnf指向了另外的地方,顺路找到/mysql.conf.d/mysqld.cnf)
2·检查防火墙是否有开放3306端口(阿里云Ubuntu默认没有防火墙,直接改安全组策略就行)
3·网上广为流传的86400秒超时(我没遇到过,内容很多)
4 修改你的用户host:
我喜欢改表的方案。思路是选中mysql,改root对应的host为%。

use mysql
# 查表
select host, user, authentication_string, plugin from user;
# 设置任意IP访问
update mysql.user set host = '%' where user = 'root';
# 你可能需要的 刷新权限生效
FLUSH PRIVILEGES;

5 修改密码:

use mysql
# 查表
select host, user, authentication_string, plugin from user;
# 改pwd
ALTER USER 'root'@'%' IDENTIFIED BY 'password';

顺便一提,默认的密码方式可能会要求一定的密码复杂度(如果遇到某些报错也许就是因为不够复杂),如果要手动设置加密方式的话,添加“WITH mysql_native_password”(这种方式好像没对复杂度有限制)
例:

ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'password';

其他加密方式同理。

DG描述

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.

我觉得问题差不多就这样了,但是…

当我尝试在我的wsl2的Windows Linux子系统的Ubuntu22里复刻的时候,又出了新问题。。。关于wsl2下的MySQL避坑内容,已经有点忘了。下次再写。总之就是整好了。
但是,重要的事情是,在wsl2下的过程中,只改了host为%就实现了从windows通过子系统ip访问子系统的MySQL。
十分不解。于是也先去找bind-address。到my.conf下,也是指向了

!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mysql.conf.d/

(可能latest的mysql都是这样?)
那目标明确:直接cat /etc/mysql/mysql.conf.d/mysqld.cnf
结果:

# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
#bind-address           = 127.0.0.1
mysqlx-bind-address     = 127.0.0.1

可能是我改的,也可能是wsl的安装过程不大一样导致的?或者是aliyun对mysql配置文件做了改变?(后来看了下上面的注释,8成就是我改的。做梦的时候改的可能)但总之,证明了bind-address确实是干这个活的(且默认值不为127.0.0.1)。

关于mysqlx-bind-address与bind-address:

mysql配置文件中mysqlx-bind-address是什么地址?跟bind-address区别? - Boomsci的回答 - 知乎
https://www.zhihu.com/question/508612477/answer/2438184032

大致意思就是,别管他,用bind-address就行了。mysqlx-bind-address相关的是x plugin(目前也没用也没了解,等一个良辰吉日了解一下)
结束。回头记录下Windows下linux子系统wsl2里的坑(包括MySQL和Docker,有的人会说了,Docker不是有WindowsDesktop嘛,也是基于wsl2的,但是我就是想把它塞到Ubuntu肚子里,哼( ̄﹃ ̄))

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值