天天看点

本地连接虚拟机MySQL提示is not allowed to connect一、问题还原二、发现问题三、解决问题四、扩展

本文将解决本地Navicat连接远程MySQL服务器提示不允许连接。

一、问题还原

本地Navicat连接centos7.3虚拟机的MySQL数据库

本地连接虚拟机MySQL提示is not allowed to connect一、问题还原二、发现问题三、解决问题四、扩展

确认连接后会报出一个这样的错误

本地连接虚拟机MySQL提示is not allowed to connect一、问题还原二、发现问题三、解决问题四、扩展

二、发现问题

这个问题一看就是远程连接的问题,但是新学习的小伙伴估计就很难想到是这方面的问题,接下来咔咔一步一步的帮助解决这个问题。

首先我们来到虚拟机终端,连接上MySQL。

执行命令

mysql -uroot -p

,然后输入密码,进入到MySQL

本地连接虚拟机MySQL提示is not allowed to connect一、问题还原二、发现问题三、解决问题四、扩展

执行指令

show databases;

可以查看到目前所有的数据库

本地连接虚拟机MySQL提示is not allowed to connect一、问题还原二、发现问题三、解决问题四、扩展

我们主要需要关注的是

mysql

这个库,切换数据库,执行命令

use mysql

,在mysql的这个数据库里边有一个user表。

本地连接虚拟机MySQL提示is not allowed to connect一、问题还原二、发现问题三、解决问题四、扩展

在这里说一个小小的点,在终端我们以往执行

clear

就可以清屏,但是在mysql中执行clear是没有作用的。

在mysql终端清屏指令是

system clear

好了,回归正题,在

user

表中,我们只需要俩个信息,一个是hos一个是user。我们需要执行查询语句给查询出来。

本地连接虚拟机MySQL提示is not allowed to connect一、问题还原二、发现问题三、解决问题四、扩展

在上图中,host列指定的是允许用户登录的ip,如果为localhost那就只能本机登录,远程是登录不了的。

这也就是为什么我们本地navicat连接mysql无法连接的原因。

由于是本地的虚拟机不存在安全问题,所以咔咔将会把host设置为

%

% 代表通配符,代表这所有的连接都可以,不限制任何ip。

注意:在生产环境下不能为了省事将host设置为%,这样做会存在安全问题,具体的设置可以根据生产环境的IP进行设置;

问题已经找到,接下来就去解决它。

三、解决问题

执行指令

update user set host='%' where user='root';

,将localhost修改为%,允许让所有ip连接。

本地连接虚拟机MySQL提示is not allowed to connect一、问题还原二、发现问题三、解决问题四、扩展

到这里还需要进行一次权限刷新

flush privileges

本地navicta再次连接数据库。这个时候就可以了。

本地连接虚拟机MySQL提示is not allowed to connect一、问题还原二、发现问题三、解决问题四、扩展

四、扩展

关于

flush privileges

在什么时候需要执行。

这个命令是将user和privilege表中的用户信息或者权限从mysql库中提取到内存中。

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

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

本地连接虚拟机MySQL提示is not allowed to connect一、问题还原二、发现问题三、解决问题四、扩展

继续阅读