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

咔咔
Lepaskan: 2020-07-01 14:57:54
asal
169 orang telah melayarinya

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

一、问题还原

本地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库中提取到内存中。

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

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

Atas ialah kandungan terperinci 本地连接虚拟机MySQL提示is not allowed to connect. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
1
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan