今天要远程连接另一台centos7上面的mysql5.6,出现了很多问题,主要就是10060,所以这里集中记录一下。
首先声明,我是小白,不懂可能服务器版本不同或者mysql版本不同所引起的差别,不过应该都差不多,所以就用我centos7+mysql5.6的配置来说;然后就是mysql安装配置这些就是铺垫了,我这里不涉及。
问题原因根据我今天解决的顺序进行排序:
原因1:检查root用户是否只设置了本地连接,具体检查方法如下:
进入数据库并选中mysql,然后查询里面的root用户的相关配置:
mysql -u root -p //进入数据库
然后输入密码
use mysql; //进入到mysql数据表中
select user,host from user; //查找表中所有用户及连接ip
根据结果,看root用户后面的host一列是否有%(有很多行都是root,只需要看有没有某一行的root后面是%),如果只出现了
user | 127.0.0.1
就说明只允许服务器连接,要改为:
user | %
具体命令如下:
update user set host='%' where user='root' and host='127.0.0.1'; //修改配置
flush privileges; //保存修改
注意上面那条命令要在mysql表下执行
原因2:没有放行端口
ummmm,很好理解,主要就是去你对应服务器的官网上面看有没有放行端口,考虑到有些和我一样的小白不知道在哪个位置检查,我给个图:
腾讯云:
找到安全组,点击右边修改规则就会出现新建规则的界面,添加下面这一条即可:
这里要注意下:你的mysql开放的端口是哪个这里就添加哪个。(一般不可以修改的话都是3306,修改了的话,自己百度吧,或者评论问我也行,敲字好累)
阿里云:
首先进入云服务器ECS界面,在该界面的左边找到网络与安全下面的安全组,在出现的页面右边点击“配置规则”,在出现的页面中点击“手动添加”,具体的信息如下:
原因三:没有关闭防火墙
说的不太准确,准确的来说应该是防火墙不拦截3306默认端口,具体方法可以百度。因为我懒得配置,就直接关闭服务器的防火墙了(安全性不太高,不过反正我里面也没啥就不怕)
具体命令如下:
service mysqld status //不是必须输入的,就是用来查看当前的状态,如果在结果中出现了active,就说明防火墙打开的;如果是inactive,说明是关闭的
//如果防火墙正打开着,就要关闭,没打开当我没说.....
systemctl stop firewalld.service
原因四:如果安装了宝塔面板,要配置端口
如果安装了宝塔,要先登录然后在左边的安全里面把端口号加上去。
其他原因:
在解决问题的过程中,其实在网上还找到了很多其他的原因,比如:
1./ect/my.cnf里面设置了bind-address为127.0.0.1,要注释掉,不过我没有出现这个问题;
2.没有给root用户分配所有权限,要给root所有权限,我没有出现这个问题
......
特别注意:
有一些地方有点儿坑,比如:
1.我先在服务器官网配置了端口,然后再关闭防火墙,此时发现我的端口配置都没有了,所以要重新去官网把3306端口配置上才行
2.看到某些博客在配置端口的时候把出口方向也配置了,完全没必要配置,只配置入口就行(至少我是这样的)