作为一名刚刚入门学习数据库的小白,在一个月之前满心欢喜装好MySQL之后,每天也都有在勤奋的练习,可是中途因为准备笔试隔了一段时间没有使用数据库,在某天登录的时候却发现自己登录不了,我一度怀疑是我自己把密码给输错了,可是在把“123”,“1234”,“12345” 都输了好几遍之后,还是报下面这个错误:
Access denied for user 'root'@'localhost' (using password: yes) 裂开!赶紧百度,结果是搜罗了各种办法都没有用,又放了几天之后接着搞,参考了好几位博主的文章,最后终于解决了问题。
结合几位博主的文章,这里给出我的解决方法:
首先以管理员身份打开cmd,切到MySQL的bin目录下:

cd C:\Program Files\MySQL\MySQL Server 8.0\bin

这里请读者找到自己的bin文件夹目录。然后停掉MySQL服务:

net stop mysql80

在这个地方,大家一定要注意看清自己MySQL服务的名称!!!我刚开始的时候参考别的博主直接写的 net stop mysql 一直报错,切记。
接着,我们要设置跳过密码登录,

mysqld --defaults-file="C:\ProgramData\MySQL\MySQL Server 8.0\my.ini" --console --skip-grant-tables --shared-memory

还是那句话,大家要找到自己my.ini文件的位置填进去。
然后,我们重新打开一个cmd窗口,还是以管理员的身份打开。
这里先不要启动MySQL服务。直接登录

mysql -u root -p

输入上述代码之后,会让你输密码,直接回车,接着就会出现welcome什么什么的,反正就是登录成功了。接下修改密码,一共有四步:
1 进入mysql,登录之后可以show databases,里面有一个叫mysql的数据库

use mysql

2 刷新权限表

flush privileges

3 将 authentication_string置为空值,否则是改不了密码的

update user set authentication_string = " " where user = 'root';

这个地方大家一定要注意,置为空值双引号之间是有一个空格的!我之前没打这个空格,改密码的时候一直报错。
4 最后修改密码

alter user 'root'@'localhost' identified with mysql_native_password by '新密码'

这样的话,密码就修改成功了。先关掉之前的所有的cmd窗口,重新打开一个cmd窗口,启动MySQL服务,直接使用新密码登录,登录成功

mysql 管理员 密码过期 mysql密码过期无法登录_mysql 管理员 密码过期


到这里,问题就基本解决了。

在这里我有一点小小的建议给大家,就是在我们查看参考资料的时候,一定要仔细观察一下代码是否正确,不要复制粘贴、拿来主义,博主们在写文章的时候偶尔也会有所遗漏,或者敲错某个单词,如果不经过自己的观察思考就直接拷贝的话,这样一个小小的错误就可能浪费你很久的时间。

最后,本人第一次发博客,有不对的地方,希望大家能够多多指正,大家一起进步。

下面是我参考过的一些文章:


https://blog.51cto.com/zhangxinqi/2177264?source=dra