遇到mysql本地连接成功,但远程连接不上的问题,无非从以下几个方面入手:
1、user表问题
mysql库中user表的root用户的host没有指定为%,而是默认的localhost,在mysql客户端执行如下操作即可
1 | # 1、切换到mysql库 |
2、防火墙问题
如果上面操作之后仍然无法远程连接mysql,就需要检查防火墙问题。我这里是ubuntu系统(其他系统自己找对应的指令)
首先查看了防火墙是否开启:
1 | # 查看防火墙状态 |
发现并没有开启,因此排除防火墙问题。
3、3306端口开放的问题
如果3306端口没有开发也会导致无法远程连接,通过指令发现3306开放了。
1 | netstat -tunlp |

但是仔细看图,有一点奇怪,就是它开放的是127.0.0.1:3306而不是0.0.0.0:3306,这才是本次问题的突破点,127.0.0.1:3306只对本机开放访问,其他ip都不行,那么该怎么解决呢?重点来了~
1)由于是apt在线安装的,mysql在目录/etc/mysql/mysql.conf.d下有个默认配置文件mysqld.cnf,打开编辑发现:

2)原来罪魁祸首就在这里,bind-address绑定的ip是127.0.0.1,我们只需将127.0.0.1改为0.0.0.0表示任意ip主机都能访问即可:

3)最后,重启mysql服务即可。