连接虚拟机时MYSQL报1045 – Access denied for user ‘root’@’主机地址'(using password: YES),有效解决方法!

原创 野人  2021-08-12 09:01  阅读 212 次

开发背景

MySQL Server version:5.7.34-log MySQL Community Server (GPL)

这个开发背景还是很重要的,因为不同的版本对应的命令可能存在差异的,所以开篇说明下会比较好。

起因

在本地用虚拟机搭建了后端的服务,以便开发时可以安心的对接接口了,再也不怕后端开/关服务器了,真香(当然,这个问题是没有办法避免了,因为处在开发阶段,我们只能说先对接他们做完了的,然后他们继续开发,我们对接),同时自己也能够了解一些后端的知识。

搭建的过程是很顺利的,但是通过Navicat连接虚拟机的数据库时,出了下面这个错误——1045 - Access denied for user 'root'@'主机地址'(using password: YES)。

经过了解,这个错误信息是说,当前电脑IP没有权限访问该数据库。

这个using password: YES,我一直以为是输入的密码正确,这么久了才知道,原来意思是,有输入密码,对是,有输入密码。(我的天哪!)。

知道问题后,就好办了,那就添加权限呗。

注意:图片中被红色画笔模糊的是主机地址。

添加权限

注意:下方的所有语句都是在MYSQL中输入的,所以首先要先进入到MYSQL中,通过一些终端工具(如Xshell),连接上我们服务器后,输入下方的命令。

mysql -u用户名 -p密码

进入后就可以开始执行对应的MYSQL语句。

法一:

/*
提示:

all——表示所有权限,当然也可以设置一些对应的权限,如select,insert,update,delete等等,更多的就自行搜索引擎了。

%——表示所有电脑IP,如果想特别指定一些电脑IP可以访问的话,改成对应的即可,改成192.168.1.6,即表示只有电脑IP是该IP的才可以访问)
*/

//授权用户(test01)所有权限,在所有的电脑上都可以访问数据库如果test01用户不存在的话则创建用户,密码为123456
grant all on *.* to 'test01'@'%' identified by '123456';

//撤销test01用户的所有授权(账号还在)
revoke all on *.* from 'test01'@'%';

//删除test01用户和对应的权限
drop user test01@'%';

法二:

因为所有的权限,都是在mysql数据库里面的user表,所以我们操作user表,也就是在操作权限了,即跟上面的命令是相同的作用,那这里就不多说操作数据库的一些基本语句了(因为我都是用Navicat这类图形化界面操作的。)

以上所有操作完毕后,大家记得,还是在MYSQL中哦,执行这条语句。

//刷新MySQL的系统权限相关表,否则还是会出现拒绝访问,还有一种方法,就是重新启动mysql服务器,来使新设置生效
flush privileges;

本文地址:https://www.yerenwz.com/4483.html
版权声明:本文为原创文章,版权归 野人 所有,欢迎分享本文,转载请保留出处!

发表评论