MySQL8.0!!!登录失败|ERROR 1045 (28000): Access denied for user ‘root‘@‘localhost‘ (using password
还是老规矩,重点直接看黄字,或者直接看第三节解决方案,其他都是废话!!
运行环境:windows10、mysql8.0.24、cmd用管理员权限运行。
一、前情提要:
1、博主找了一份源码,数据库sql文件的编码格式是utf8mb4,然后当时的mysql版本是mysql5.0不支持utf8mb4,于是就开始了卸载旧版本安装新版本(当前最新mysql8.0.24)的历程。
2、跟着网上的教程一顿操作猛如虎之后,以为安装成功,输入mysql -u root -p
,然后输入生成的初始root密码,结果就报错ERROR 1045 (28000): Access denied for user ‘root‘@‘localhost‘ (using password: YES)。(如图)
3、接着我就去收这个error的解决方案,然后网上让我修改my.ini文件的[mysqld]底下加了一句skip-grant-tables
,然后再登录就报错:ERROR 2003 (HY000): Can’t connect to MySQL server on ‘localhost’ (10061)
4、然后后面怎么操作都是报这个error2003的错误!
!!!好家伙,如果你目前的情况跟我一样,首先,你先在cmd里面输入命令net start mysql,这里显示启动成功,然后打开“服务”,发现mysql服务根本就没有启动!!!!! orz!!!!万恶之源!!!解决了一上午终于被我找到原因了!!
好的,如果以上都是一样,那么你的情况与我相同,一下解决方案对你来说有效,可以接着往下跟着操作就好了。除给出解决方案以外,我还会解释报错的原因和解释。
二、报错原因
首先感谢博主:博文链接
1、首先报错:无权限错误
ERROR 1045 (28000): Access denied for user ‘root‘@‘localhost‘ (using password: YES)
【翻译:拒绝用户“root”@“localhost”的访问(使用密码:是)】
原因:root没有使用权限
常规解决方案:也就是在my.ini中加那一句skip-grant-tables;但是这个方法用过之后不仅没有解决问题,mysql服务也无法正常打开!通过查询解决方案后,发现这个方法对于mysql8.0以上版本并不适用,需要另一种解决方案。
正确解决方案:见下一小节。
2、报错:mysql服务未启动错误
ERROR 2003 (HY000): Can’t connect to MySQL server on ‘localhost’ (10061)
【翻译:错误2003(HY000):无法连接到“localhost”上的MySQL服务器(10061)】
也就是mysql服务没有打开
原因:试了之后发现把上一步加进my.ini里面的那句skip-grant-tables删掉就不会报这个错了,mysql服务也能正常打开,所以产生这个报错的原因就是上一步的操作影响。
正确解决方案:见下一小节。
三、解决方案 (进入正题进入正题!!!!)
一、如果之前在my.ini里添加了skip-grant-tables,删掉这一句,保存。(删的时候要先手动关闭mysql服务,不然保存不了。)然后net start mysql启动mysql服务,重新mysql -uroot -p输入密码,然后发现不报服务未启动的错了,回到第一个错误:ERROR 1045 (28000): Access denied for user ‘root‘@‘localhost‘ (using password: YES)。
二、重点来了:
【注】如果以下命令执行时报出了一些奇怪的错误,你可能需要先cd到你的mysql安装目录,或者bin目录下,再执行这条命令,如果觉得麻烦那可以直接设置一下mysql的环境变量,甩个教程链接,<mysql8.0环境变量配置教程 >,只用在系统变量PATH添加bin目录的路径就好了。
1、用管理员权限打开!!两个!!cmd窗口!!!两个!两个!重要的事情说三遍!
2、先在 第一个窗口 输入命令:
mysqld --console --skip-grant-tables --shared-memory
然后回车,先不关掉这个窗口。
3、在 第二个窗口 输入mysql -uroot -p
,不输入密码直接回车,就可以登录上去了,如图。
4、由于博主是初次安装mysql8.0所以下一步需要修改密码,也是在 第二个窗口 操作:输入以下三句命令重置root密码为空:
(1)输入use mysql,回车;
use mysql
(2)输入如下命令回车,重置root密码为空;
update user set authentication_string='' where user='root';
(3)输入quit;退出mysql;
quit;
至此密码设置为空成功,下一步修改密码。
(本操作命令运行截图在上一张图中。)
5、把以上打开的两个cmd窗口 都关闭 !!!重新用管理员权限新打开一个窗口,进行最后一步修改密码操作。
(1)重新打开mysql服务;
net start mysql
(2)使用root连接数据库,不输入密码,直接回车(因为上一步已经把密码设空了);
mysql -u root -p
(3)设置新密码,中文处记得改成你的新密码;
ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';
(4)输入quit;
退出,再次mysql -u root -p
重新连接数据库,输入刚刚修改的密码,就能成功登录了!
问题解决!撒花!!!祝心情愉快!!!!
最后感谢博主:博文链接