本地链接虚拟机MySQL提示is not allowed to connect

本文将解决本地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 clearcentos7

好了,回归正题,在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库中提取到内存中。

当用户数据和权限出现修改后,不想重启数据库的状况下就想直接生效,就须要执行这个指令。

也就是说这个指令只针对于用户数据和用户权限修改的状况下。

在这里插入图片描述

相关文章
相关标签/搜索