背景: 今天在阿里云CentOs里部署MySQL,用ssh连上可以进入数据库,但是本地Navicat就是连不上。如图:

hfish连接不上mysql 为什么连接不到mysql服务器_hfish连接不上mysql

过程:到处看帖子,各种尝试,过程如下:

1.有的帖子提醒要先开启mysql服务:systemctl satrt mysqld.service 这个等同于废话,肯定会先开服务再尝试连接的。

2.有的提醒要修改配置文件:vim /etc/my.cnf 将文件中的bind-address =127.0.0.1注释掉。但是我的文件压根就没有这句话,应该是版本不同,所以忽视。

3.有的提醒要授权给网络上其他主机访问数据库,这一点还是有用的:进入MySQL命令之后:

use mysql;

grant all privileges on * . * to ‘root’@’%’ identified by ‘你的密码’;

flush privileges;

这里%表示所以主机,而不只是localhost

4.有的提醒要修改一下密码:基本上没啥用

5.有的提示开放3306端口,我的服务器防火墙都是关闭的,不存在这个问题,但是为了排除,我由打开防火墙,开放3306端口。这一步其实有用,但是我弄错了地方

6.有的提示在Navicat软件里通过ssh连接,我觉得这是最后的无奈之举,因为通过ssh就不是远程连接MySQL了,而是先登录进服务器,再从服务器本地进MySQL。虽然效果差不多,但是没有解决MySQL远程登录的问题,如图

hfish连接不上mysql 为什么连接不到mysql服务器_Navicat_02

这根本就不是远程连接MySQL!

7.最终解决方法是:在阿里云控制台里给服务器的安全组添加规则,开放3306端口。 这是把我坑惨了,之前不知道阿里云服务器自带防火墙,所以在CentOs里折腾防火墙一点用都没有,这里没开怎么也连不上。坑了我一个多小时,真是无语了。所以如果是用的阿里云服务器前面的方法都没解决的可以试试是不是安全组里没开放3306端口。 如图:

hfish连接不上mysql 为什么连接不到mysql服务器_远程连接_03

之前没开3306就不行,开了立马就好了!问题解决。