[8006]亲测解决mysql登录Access denied foruser ‘root’@‘localhost’(using password:YES)?

[8006]命令行或( Navicat SQLyog等)mysql登录遇到Access denied for user ‘root’@‘localhost’(using password:YES)?


问题背景:


1.今天下午登录Navicat遇到Access denied for user ‘root’@‘localhost’(using password:YES)?,密码是不会记错的,但是登不上去,就算我去重新设置密码了(服务里面重新设置,没有用跳跃,而且就算跳过加了skip-grant-tables密码登录,还是报错,我同桌就是这样的),也登不进去;
2.记得以前通过命令行也遇到过那样的问题,嘿嘿,就按照以前的方式又重新卸载mysql重新安装了一遍,你会说你也卸载重新安装了一下,结果不行,我同桌也是,可能你是少了删除原来数据库名这一步;
3.我先声明我安装了两个数据库(mysql5.7,mysql8.0.26),但运行一个并不是我想要打开的,这也是我出错原因,也许你是安装过两次不同名的或者有一个打开的数据库并不是你要使用的,细节底下说,先看解决方法,要是对了,有兴趣可以了解了解。
4.我的已经改好了,现在去恢复一下错误的方式,嘿嘿!改对了记得点个赞,为了效果卸载数据库的data好麻烦的!


命令行窗口错误:


在这里插入图片描述



Navicat 等图形化界面工具错误:


在这里插入图片描述


/*
总共分为三种情况:
数据库没啥重要的东西且不知道密码(我使用的,小白推荐)
数据库有重要的东西且知道密码(为了恢复bug,亲测有效,反正我的东西回来了)
数据库有重要的东西且不知道密码(大佬推荐,查些了资料,亲测也实现了)
*/

1.解决方法第一种情况:(数据库没啥重要的东西且不知道密码)

总共六步解决,但是原来的数据库信息就用不了了哦!

**第一步:**以管理员的身份(我的path配置放在了系统变量里,全部管理员身份)关掉正在运行的数据库,在命令行输入:(当然你也可以在任务管理器的服务中,手动关闭(右击点击停止))

net stop mysql/*net stop mysql57(去服务里面看看你的数据库名称叫什么,一般都是mysql)*/

在这里插入图片描述


在这里插入图片描述


第二步
找密码,如果你的数据库没啥重要的东西,删掉data文件(保险起见,我反正都是重新配置的,所以都删掉了),为了下一步重新运行my.ini生成新的data文件(生成新的密码为了后面的登录):


在这里插入图片描述


第三步卸载原有的mysql服务进程名(先关闭服务):这一步很关键,我同桌(和一般安装的区别之处,必须关掉把以前安装的mysql服务进程名清除干净,不然初始化不成功)就是少了这一步,初始化后还是登不进去。


mysqld  remove  mysql
或者
mysqld  remove  mysql57

在这里插入图片描述

第四步:初始化生成mysql下data文件,在控制台输出一个临时密码,把root@localhost:之后的密码: <TSa>IsV;9#a保存起来
温馨提示:如果初始化都报错,应该是mi.ini的原因,看看情况二关于my.ini修改的建议。


Mysqld --initialize --console

Mysql --initialize -insecure


第五步:把mysql注入服务器中–>启动mysql–>mysql -uroot -p (登录数据库)–>将上方的临时密码输入进去–>登录进去了,说明你配置成功了,问题已经基本解决了哈!

Mysqld -install/*或者默认起的名字mysql*/
net start mysql
mysql -uroot -p

在这里插入图片描述


第六步alter user ‘root’@‘localhost’ identified by ‘新密码123456’;(设置密码)–>exit(退出登录)–>mysql -uroot -p(验证密码修改是否成功),到这里mysql的安装初始化注册完成了没问题,相应的问题也解决了哈。

alter user 'root'@'localhost' identified by '新密码123456'


在这里插入图片描述
在这里插入图片描述

2.解决方法第二种情况:(数据库有重要的东西且知道密码)


这种情况就很好解决:
1.首先你可以把data文件复制一份在其他的地方,然后按第一种情况执行下去后,修改成功后,将服务中的mysql进程关掉,
2.然后再将原来的data替换成新生成data,,在进行打开数据库,其实嘞,我是因为为了写这篇博客需要把原来的卸载掉,但是我也有重要的数据,所以就采用了这种办法,原来的数据连接是用不了了,但是新建的数据库里数据并没有丢失,亲测有效!(不过这种情况很少见,错误的原因虽然会在第一种情况下解决,应该是端口号或服务mysql进程的不一致)的原因。
3.最后关于my.ini的文件配置的了解,这有一片关于my.ini的博客有兴趣了解一下(安装数据库的时候就了解这位大佬了)MySQL的my.ini配置文件错误(端口号):

https://blog.csdn.net/lienfeng6/article/details/78140404


特别注意:在配置my.ini的时候basedir和datadir名路径名不易过长,否则就找不到文件的地址了,出现初始化就会报错,这个另一个同桌出现的问题。
在这里插入图片描述


3.解决方法第三种情况:(数据库有重要的东西且不知道密码)

第一种方式是在服务中暴力修改(我用的方法),如果不行,第二种方式直接在my.in里面在[mysqld]下skip-grant-tables,进行密码跳跃,就是不需要登录密码就能进入数据库(我同桌用的方法)
1.**修改密码第一种方法:**命令行窗口直接输入services.msc 可直接打开服务–>双击数据库名mysql57进入其属性里–>点击登录,在里面修改密码–>应用–>确定。


在这里插入图片描述
在这里插入图片描述

修改密码第二种方法(三步骤):
第一步(不推荐):(如mysql8.0以后的版本直接跳到第二步,文件修改数据库运行不起来,而且等你搞完了还要去删除my.ini的这个命令,麻烦,更建议通过在命令行修改,看第二步):
在你安装的数据库文件路径下找到my.ini进行编辑(如果管理员身份打不开,就把文件剪切到桌面,修改好了在移回去),在my.in里面在[mysqld]下skip-grant-tables;

skip-grant-tables/*mysql8.0以前版本,8.0以后的版本失效直接在命令行进行,往下看*/

在这里插入图片描述


在这里插入图片描述

在这里插入图片描述


** 第二步:**以管理员的身份(我的path配置放在了系统变量里,全部管理员身份)关掉正在运行的数据库,在命令行输入:net stop mysql(当然你也可以在任务管理器的服务中,手动关闭(右击点击停止))–>命令行输入mysqld --console --skip-grant-tables (8.0以后的版本)跳过密码–>另开一个窗口启动mysql(按两次回车)–>mysql -uroot -p (登录数据库):如下图:

net stop mysql/*net stop mysql57(去服务里面看看你的数据库名称叫什么,一般都是mysql)*/

mysqld –skip-grant-tables/*mysql8.0以前版本*/
mysqld --console --skip-grant-tables --shared-memory/*mysql8.0以后版本*/
net start mysql
mysql -uroot -p

在这里插入图片描述
(目前用的是mysql8.026的,至于mysql5.7为了演示第一种中情况,删掉了,也懒得再安装了),现在呢,我在进行即保存数据又要重置密码的操作,接着往下看:
在这里插入图片描述


第三步:flush privileges;(重新加载权限)–>set password for root@localhost = ‘123’;(设置密码)–>exit(退出登录,把两个,命令行全部关掉,再打开一个命令行)–>mysql -uroot -p(验证密码修改是否成功),即完成啦!

flush privileges;
set password for root@localhost = '123';
mysql -uroot -p


在这里插入图片描述

在这里插入图片描述


原因分析:


1.首先来解释一下:Access denied foruser ‘root’@‘localhost’(using password:YES)?的含义:拒绝访问root用户@ localhost用户的密码是YES ?:重点是拒绝访问上,至于密码对不对,只要输入密码就是YES,没有就是NO

2.我遇到这个问题是因为我安装了两个,,想打开的数据库和正运行的数据库不匹配(端口号不匹配,专业点就是去杀死kill进程),所以打不开,我同桌的也是,那个mysqld remove mysql清除干净很关键,当然也有些人是忘记密码等等

3.至于遇到: Can’t connect to MySQL server on ‘localhost:3306’ (10061),那是你数据库没有打开
在这里插入图片描述
4.最后就是遇到跳跃权限的问题,由于数据库的更新,以前的命令不在适用于最新数据的跳跃语句,换成了mysqld --console --skip-grant-tables --shared-memory,哭死,就像最新版本的JDK18一样,版本在更新,问题也在改变,继续加油吧,兄弟们!


  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 10
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值