本文将解决本地Navicat链接远程MySQL服务器提示不容许链接。mysql
1、问题还原
本地Navicat链接centos7.3虚拟机的MySQL数据库
sql
确认链接后会报出一个这样的错误
数据库
2、发现问题
这个问题一看就是远程链接的问题,可是新学习的小伙伴估计就很难想到是这方面的问题,接下来咔咔一步一步的帮助解决这个问题。centos
首先咱们来到虚拟机终端,链接上MySQL。安全
执行命令mysql -uroot -p
,而后输入密码,进入到MySQL服务器
执行指令show databases;
能够查看到目前全部的数据库
咱们主要须要关注的是mysql
这个库,切换数据库,执行命令use mysql
,在mysql的这个数据库里边有一个user表。
在这里说一个小小的点,在终端咱们以往执行clear
就能够清屏,可是在mysql中执行clear是没有做用的。学习
在mysql终端清屏指令是system clear
centos7
好了,回归正题,在user
表中,咱们只须要俩个信息,一个是hos一个是user。咱们须要执行查询语句给查询出来。code
在上图中,host列指定的是容许用户登陆的ip,若是为localhost那就只能本机登陆,远程是登陆不了的。图片
这也就是为何咱们本地navicat链接mysql没法链接的缘由。
因为是本地的虚拟机不存在安全问题,因此咔咔将会把host设置为%
。
% 表明通配符,表明这全部的链接均可以,不限制任何ip。
注意:在生产环境下不能为了省事将host设置为%,这样作会存在安全问题,具体的设置能够根据生产环境的IP进行设置;
问题已经找到,接下来就去解决它。
3、解决问题
执行指令update user set host='%' where user='root';
,将localhost修改成%,容许让全部ip链接。
到这里还须要进行一次权限刷新flush privileges
本地navicta再次链接数据库。这个时候就能够了。
4、扩展
关于flush privileges
在何时须要执行。
这个命令是将user和privilege表中的用户信息或者权限从mysql库中提取到内存中。
当用户数据和权限出现修改后,不想重启数据库的状况下就想直接生效,就须要执行这个指令。
也就是说这个指令只针对于用户数据和用户权限修改的状况下。