Centos7服务器开启mysql远程访问权限后本地却无法访问的问题

前言:最近在阿里云买了个Centos7服务器,并安装了mysql,由于在服务器上对数据库进行操作只能用命令,感觉不是太方便,所以就想着在自己的电脑上用Navicat for Mysql连接服务器的数据库进行相应的操作,这样方便一点。但过程中出现了一点问题,我在服务器开放了数据库的远程访问权限后,在自己电脑上用Navicat for Mysql也确实连接成功了,但是本地却访问不了了。。。

开启数据库远程访问权限

用Xshell登陆服务器,然后在服务器上用mysql -uroot -p登陆mysql,输入你自己设置的密码,然后我们可以查看一下有哪些数据库。
Centos7服务器开启mysql远程访问权限后本地却无法访问的问题
接着就是输入以下开启数据库远程访问权限的命令

grant all privileges on *.* to 'root'@'%' identified by '123';

这里的*.*代表可以访问所有的数据库,如果想指定只能访问某个数据库的话可以将第一个*替换成你的某个数据库名称,%代表所有主机,你也可以设置具体的一个ip,123为连接数据库的密码,可以随便设置。

上面命令执行成功后再输入以下命令,这是重新加载权限数据的意思

flush privileges;

用Navicat for Mysql连接数据库

在自己的电脑上用软件Navicat for Mysql连接服务器的数据库发现可以连接了
Centos7服务器开启mysql远程访问权限后本地却无法访问的问题

服务器本地无法访问数据库

此时,在服务器上登陆数据库突然登陆不了了,报出了以下问题
Centos7服务器开启mysql远程访问权限后本地却无法访问的问题
当时我就懵逼了,于是我复制了以上问题百度了一下,发现大多数网友的解决方法都是在/etc/my.cnf(注:这是针对Centos操作系统来说,其它操作系统大家可自行上网查阅)文件里的[mysqld]下加上skip-grant-tables这个参数。我试了,但是没有解决问题。后来,我打开mysql数据库下的user表看了一下,并对比了Host下的%,发现localhost这个Host没有任何权限。
Centos7服务器开启mysql远程访问权限后本地却无法访问的问题
Centos7服务器开启mysql远程访问权限后本地却无法访问的问题
此时我在想,有可能是这个原因导致的,解决办法就是给它权限。于是,我又采用了上面的那条权限命令,只是将%改为了localhost。(ps:因为服务器登不了数据库,所以只能在Navicat for Mysql上操作了)

grant all privileges on *.* to 'root'@'localhost' identified by '123';
Centos7服务器开启mysql远程访问权限后本地却无法访问的问题
接着好像还要输入flush privileges;这个命令,在这里我没有输入这个命令,我只是按F5刷新了一下user表,网友说不输入这个命令好像无法成功,但我后面成功了,我也不知道为什么。然后再来看一下user表,发现多出了一行数据,localhost变化了。
Centos7服务器开启mysql远程访问权限后本地却无法访问的问题
此时,在服务器上再次登陆数据库,发现竟然成功了!
Centos7服务器开启mysql远程访问权限后本地却无法访问的问题
查看一下有哪些数据库,哈~ 还是原来的样子
Centos7服务器开启mysql远程访问权限后本地却无法访问的问题
到这,问题应该解决了,总的来说还是权限的问题,我也不知道为什么开启了远程权限,本地却失去访问权限了,总之我也感到很奇怪。

最后

这是我在操作数据库时遇到的一个问题,在此记录一下,如果对你有用,那就再好不过了。