阿里云轻量应用服务器上配置MySQL远程连接—我遇到的坑(Communications link failure)

在阿里云DMS新增数据库上提示错误,如下图所示
阿里云轻量应用服务器上配置MySQL远程连接—我遇到的坑(Communications link failure)_第1张图片
为什么要使用DMS?是因为因安全原因,不建议将MySQL服务对所有公网IP都开放连接,因此我们需要设置MySQL服务只允许DMS的IP地址连接。需要发起一次连接,DMS界面上会提示具体的IP地址。

然后用Navicat连接,就报错。如下图所示
在这里插入图片描述
那么这个错误的原因是什么呢?
我去网上搜过很多博客,几乎所有博客都是说这个错误与wait_timeout 、interactive_timeout有关。
在这里就介绍下这两个参数:

interactive_timeout指的是mysql在关闭一个交互的连接之前所要等待的秒数。

wait_timeout指的是mysql在关闭一个非交互的连接之前所要等待的秒数。

通过mysql客户端连接数据库是交互式连接,通过jdbc连接数据库是非交互式连接。

JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。

这两个参数默认都是28800s,即8个小时;
interactive_timeout = 28800
wait_timeout = 28800
因为这两个参数设置的时间过短,所以我把它都改为604800s(一周)。如下图所示
阿里云轻量应用服务器上配置MySQL远程连接—我遇到的坑(Communications link failure)_第2张图片
更改两个参数的SQL语句

set global wait_timeout = 604800
set global interactive_timeout = 604800

但是当我重启MySQL或者是服务器后,这两个参数还是没有改变。如下图所示
阿里云轻量应用服务器上配置MySQL远程连接—我遇到的坑(Communications link failure)_第3张图片
后来当我去查阅资料后,才了解到这两个参数要在配置文件上改,才能生效

Windows下MySQL的配置文件是my.ini,一般会在安装目录的根目录。
Linux下MySQL的配置文件是my.cnf,一般会放在/etc/my.cnf

所以我找到my.cnf文件。如图所示
阿里云轻量应用服务器上配置MySQL远程连接—我遇到的坑(Communications link failure)_第4张图片打开my.cnf文件,并作了修改。如图所示
阿里云轻量应用服务器上配置MySQL远程连接—我遇到的坑(Communications link failure)_第5张图片

然后重启服务器,这两个参数才变化。
阿里云轻量应用服务器上配置MySQL远程连接—我遇到的坑(Communications link failure)_第6张图片
然而当我再次登录数据库时,还是报原来的错误,navicat还是连接不上。看来我的错误与这两个参数无关。

而后我查看3306端口是否被占用以及是否监听所有ip,如图所示
在这里插入图片描述
结果都正常。

然后我又去查看防火墙是否开放了3306端口,如图所示
阿里云轻量应用服务器上配置MySQL远程连接—我遇到的坑(Communications link failure)_第7张图片
结果没有开放。

但是我已经在阿里云控制台上的防火墙添加了这个规则
阿里云轻量应用服务器上配置MySQL远程连接—我遇到的坑(Communications link failure)_第8张图片阿里云轻量应用服务器上配置MySQL远程连接—我遇到的坑(Communications link failure)_第9张图片
最后我去查看防火墙配置文件(/etc/sysconfig/iptables)中,并开放了3306端口
阿里云轻量应用服务器上配置MySQL远程连接—我遇到的坑(Communications link failure)_第10张图片最后登录并连接成功。
阿里云轻量应用服务器上配置MySQL远程连接—我遇到的坑(Communications link failure)_第11张图片

你可能感兴趣的:(服务器)