本地连接虚拟机MySQL提示is not allowed to connect怎么办
本篇内容介绍了"本地连接虚拟机MySQL提示is not allowed to connect怎么办"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
一、问题还原
本地Navicat连接centos7.3虚拟机的MySQL数据库确认连接后会报出一个这样的错误
二、发现问题
这个问题一看就是远程连接的问题,但是新学习的小伙伴估计就很难想到是这方面的问题,接下来咔咔一步一步的帮助解决这个问题。
首先我们来到虚拟机终端,连接上MySQL。
执行命令mysql -uroot -p
,然后输入密码,进入到MySQL
执行指令show databases;
可以查看到目前所有的数据库我们主要需要关注的是mysql
这个库,切换数据库,执行命令use mysql
,在mysql的这个数据库里边有一个user表。在这里说一个小小的点,在终端我们以往执行clear
就可以清屏,但是在mysql中执行clear是没有作用的。
在mysql终端清屏指令是system clear
好了,回归正题,在user
表中,我们只需要俩个信息,一个是hos一个是user。我们需要执行查询语句给查询出来。
在上图中,host列指定的是允许用户登录的ip,如果为localhost那就只能本机登录,远程是登录不了的。
这也就是为什么我们本地navicat连接mysql无法连接的原因。
由于是本地的虚拟机不存在安全问题,所以咔咔将会把host设置为%
。
% 代表通配符,代表这所有的连接都可以,不限制任何ip。
注意:在生产环境下不能为了省事将host设置为%,这样做会存在安全问题,具体的设置可以根据生产环境的IP进行设置;
问题已经找到,接下来就去解决它。
三、解决问题
执行指令update user set host='%' where user='root';
,将localhost修改为%,允许让所有ip连接。到这里还需要进行一次权限刷新flush privileges
本地navicta再次连接数据库。这个时候就可以了。
四、扩展
关于flush privileges
在什么时候需要执行。
这个命令是将user和privilege表中的用户信息或者权限从mysql库中提取到内存中。
当用户数据和权限出现修改后,不想重启数据库的情况下就想直接生效,就需要执行这个指令。
也就是说这个指令只针对于用户数据和用户权限修改的情况下。
"本地连接虚拟机MySQL提示is not allowed to connect怎么办"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!