WdBly Blog

懂事、有趣、保持理智

周维的个人Blog

懂事、有趣、保持理智

站点概览

周维 | Jim

603927378@qq.com

推荐阅读

windows MYSQL8.0.20数据库登录时 报错 ERROR 1045 (28000) / MYSQL8.0.20数据库修改密码

MYSQL8.0.20数据库修改密码

之前安装了mysql , 也通过navicat成功连接上了本地数据库;太久没有用了,最近想再次连接使用时,发现连不上,一直报ERROR 1045 (28000)错误;在网上查了各种解决方案,说1045报错本质上是密码跟用户对不上,也就是说是密码错误。于是找了很多修改密码的方法,查到博主的很多教程都是旧版本的指令,比如修改my.ini文件,或直接运行修改password脚本,根本无法运行。修改完成后,还是得写一写记录一下。

(一)确认停止运行MySQL服务

方法1.在cmd命令行中输入: net stop mysql ; 这样就可以将MySQL服务停止。
方法2.在任务管理器里搜索“service”,进入找到 MySQL服务,停止服务即可。
在这里插入图片描述
在这里插入图片描述

(二)以管理员身份打开cmd,并切换至MySQL的安装目录下的bin目录;开启跳过密码验证登录的MySQL服务:

输入:mysqld --console --skip-grant-tables --shared-memory
直接回车即可;
在这里插入图片描述

(三)再新开一个cmd(同样以管理员身份打开),并切换至MySQL的安装目录下的bin目录;开始免密登录:

输入:mysql -u root -p
回车后会让我们输入密码,因为第二步是开启跳过密码验证的MySQL服务;所以不用输密码,直接回车就行;
在这里插入图片描述

(四)在第三步的cmd基础上,切换至mysql库,然后查看用户信息,再将root用户密码设置为空:

1.切换至mysql库:use mysql;

2.查看用户信息:select host, user, authentication_string, plugin from mysql.user;
注意这里很多博主写的是:select host, user, password, plugin from mysql.user;8如果我们直接执行会报错,因为mysql 8.0版本,密码是用authentication_string列了,不再是password;

3.将root用户密码设置为空:update user set authentication_string=’’ where user=‘root’;
(因为本人已经修改成功密码了,这里截图就没有再演示将root用户密码设置为空了,读者按照流程执行即可;)

4.上一小步已经将root用户的密码(即authentication_string)设置为空;这时,可以再查看哈用户信息:select host, user, authentication_string, plugin from mysql.user;
就可以看到root所对应的authentication_string为空了。

5.更新设置完密码为空后,刷新权限。输入:flush privileges;
在这里插入图片描述
备注:本人参照网上流程执行,到最后一步流程都执行成功了,拿着新改的密码再次登录时还是报错ERROR 1045 (28000),重复走了好几次流程最后一遍才发现,我在这一步查看用户信息:select host, user, authentication_string, plugin from mysql.user; 查出来的结果 root 对应的host列是一个’&'符号,而不是localhost , 于是在这一步将host列的’&‘修改成localhost, 执行语句: update user set host=‘localhost’ where user=‘root’; 然后照着接下来的流程就修改密码成功了,所以一定要仔细一点!!!!

(五)关闭以-console --skip-grant-tables --shared-memory 启动的MySQL服务;即关闭第二步的cmd窗口(窗口关闭,这种形式启动的MySQL服务也会停止);再新开一个cmd(同样以管理员身份打开),并切换至MySQL的安装目录下的bin目录,启动MySQL服务;然后开始免密登录mysql服务,再修改密码即可。

1.启动MySQL服务:net start mysql

2.免密登录,输入:mysql -u root -p
回车后会让我们输入密码,因为第三步已经设置root用户密码为空;所以直接回车就行;
(因为本人已经修改成功密码了,这里截图就是使用密码正常登录的,读者按照流程执行即可;)

3.修改密码:alter user’root’@‘localhost’ IDENTIFIED BY ‘root’;
(修改密码为root,第一个root是账户名,第二个root是密码。由于我是新装的MySQL,还没开启远程访问权限,所以此处@后面是localhost,有些是填入%,此处需要填入对应的权限值)

将密码修改为root后,我们可以重新查询表中字段信息。此时密码字段authentication_string不再是空,并且是密文显示。 输入:select host, user, authentication_string, plugin from mysql.user;

在这里插入图片描述
根据以上步骤密码就修改成功啦。读者可以在这里退出mysql服务后,再使用新修改的密码进行登陆验证。

总结1:一定要对每一步都细心观察,如果到最后没修改成功,可能是中间某一步信息有问题跟网上不一样;此时再重复以上流程观察修改即可,基本上可以成功修改mysql密码;

总结2:本人修改密码为root后(我印象中之前的密码就是root),直接点击navicat连接本地数据库(即没有将MySQL新设置的密码root更新到navicat连接中),说明原密码就是 root; 思考了一下,其实本人连不上数据库报错ERROR 1045 (28000) 的直接原因是:root的所对应host列是一个’&‘,但要将’&‘修改成localhost,就必须得进入MySQL服务,那就不得不先免密登录,走一遍修改密码的全流程。

个人CSDN连接:https://blog.csdn.net/weixin_44676272/article/details/114294023?spm=1001.2014.3001.5502
附上解决中给予帮助的文章(无先后顺序),感谢。
https://www.cnblogs.com/greenteaone/p/9994477.html
https://www.pianshen.com/article/7287279782/
https://blog.csdn.net/lei95/article/details/104736176

提交

全部评论0

暂时没有评论...