我觉得我应该改名字叫填坑掌柜,
本来只是改个MySQL导入文件的权限问题,结果引发了一系列的踩坑,填坑过程… 好吧,还是开始正题,我们开始填坑第一个:
ERROR1045(28000):Access Denied for user ‘root’@‘localhost’ (using password:YES)
这个出现的原因是因为我之前初始化了mysqld,然后就导致下面的几件事都发生了:
1)mysql的服务已经初始化;
2)data文件夹存储了SSL证书和关键文件;
3)验证密码插件已经安装和运行;
4)超级用户账号‘root’@'localhost’已经被创建,但是账户密码设置和存储在错误的日志文件里面。
简而言之:因为之前初始化导致原来密码失效了,所以当密码再次输入就是密码错误,会被禁止登录。 如果还是使用之前的原密码就会一直报错这个,解决办法就是重置密码。
那么MySQL要如何在这种情况下重置密码呢?这个一开始掌柜就搜索了全网络,不管中文还是英文的方法都尝试过:
主要就是让直接“忽略权限”登录和使用这个命令“skip-grant-tables”后再使用修改密码的SQL指令,但是经过实践,发现均对我这里无效!!!
后来查阅很多资料发现有些方法无效是因为MySQL的版本不同导致的!!!MySQL8.0版本之后和之前的差别很大。。。掌柜还是觉得从官方文档入手更靠谱,于是翻到官方重置密码那里:
PS:
下面是MySQL的官方文档的8.0版本的重置root密码在Windows系统下的方法 !!!LINUX系统和其他系统的版本的方法请自行去官网查看,谢谢。
跟着他的步骤走,
- 首先用管理员权限打开cmd(这个窗口不要关,后面还有用);
- 接着输入如下命令停止MySQL服务:
net stop mysql
或者去此电脑 -->右键管理 --> 找到服务和应用程序 --> 下面的服务选项 --> 最后在右边找到MySQL --> 右键就可以停止服务!
- 然后你去C盘的某个文件夹下面创造一个txt类型的文件,在里面写入下面这个命令:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'yourNewpassword';
保存后文件命名为:
mysql-init
- 现在再打开另一个cmd(普通方式),cd到你的MySQL的bin文件夹所在位置,比如下面这样:
再输入下面的指令(PS:注意里面的路径使用的是双反斜杠 \\ ):
mysqld --init-file=C:\\你的自己刚刚创建的重置密码的文件路径\\mysql-init.txt
然后回车(此刻后面不会输出什么,会一直闪烁光标),就等待一会,等他生效。
- 大概一分钟后你再去删除 mysql-init.txt这个文件。
- 最后你再去一开始的管理员cmd那个窗口里面输入:
net start mysql
接着你就会看到:
再次输入登录命令和新的密码,就成功登录🎉:
好了,接下来还有下一个问题要解决😂。。。