数据库报错1045-Access denied for user ‘root‘@‘localhost‘ (using password: YES)解决方式

2024-07-13 1433阅读

文章目录

  • 前言
  • 一、原因:
    • 1.数据库密码被篡改了!
    • 2.数据库权限变更了!
    • 二、解决方法
      • 1.方法:编辑mysql配置文件my.ini
      • 2.步骤如下:
      • 三、总结:mysql8.0版本下命令行mysqld -skip-grant-tables 失效 无法登陆问题的解决方法
      • 四、设置新密码
        • 1.进入mysql数据库:
        • 2.给root用户设置新密码:
        • 3.刷新数据库
        • 4.退出mysql:

          前言

          今天在用自己电脑,想使用Navicat打开MySQL数据库时,发现登陆不上并提示1045 Access denied for user ‘root’@‘localhost’ (using password: YES)。网上的答案都“千篇一律,描述的也不够简便清晰”。今天我针对这个问题给出原因解释和两个解决此问题的方法!

          数据库报错1045-Access denied for user ‘root‘@‘localhost‘ (using password: YES)解决方式

          一、原因:

          1.数据库密码被篡改了!

          没错,就是这个原因。但是很多人会立马反驳,我自己的电脑一直用着好好的,怎么会被篡改了呢?黑客的手段厉害着呢,篡改你的数据库密码不是主要目的,目的是篡改后进入你的数据库备份数据库文件然后删除本地数据库,要挟你索要比特币才是主要目的。

          数据库报错1045-Access denied for user ‘root‘@‘localhost‘ (using password: YES)解决方式

          2.数据库权限变更了!

          这个原因与你机器的账户权限变更有很大的关系,实际发生场景有很多,就不举例了。

          二、解决方法

          1.方法:编辑mysql配置文件my.ini

          在mysql的安装目录下,不同电脑可能不一样,参考目录:

          ①D:\Program Files\MySQL\MySQL Server 5.0\my.ini;

          ②C:\ProgramData\MySQL\MySQL Server 8.0\my.ini;

          在[mysqld]这个条目下加入 skip-grant-tables 保存退出后重启mysql

          PS:

          8.0的版本不支持,亲测8.03,免得爆后面的错误:

          mysql: [ERROR] unknown option ‘–skip-grant-tables’.

          2.步骤如下:

          1.打开cmd,点击“开始”->“运行”(快捷键Win+R)。

          2.停止:输入 net stop mysql

          3.启动:输入 net start mysql

          4.跳过权限:输入mysqld --console --skip-grant-tables --shared-memory

          数据库报错1045-Access denied for user ‘root‘@‘localhost‘ (using password: YES)解决方式

          也可以在计算机-管理-服务里面找到MySQL的服务,手动进行重启服务。如图:

          数据库报错1045-Access denied for user ‘root‘@‘localhost‘ (using password: YES)解决方式

          这时候在cmd里面输入mysql -u root -p就可以不用密码登录了,出现 password:的时候直接回车可以进入,不会出现ERROR 1045 (28000),但很多操作都会受限制,因为没有grant权限。

          数据库报错1045-Access denied for user ‘root‘@‘localhost‘ (using password: YES)解决方式

          三、总结:mysql8.0版本下命令行mysqld -skip-grant-tables 失效 无法登陆问题的解决方法

          1、管理员权限登陆cmd,不会使用管理员登陆的请搜索cmd,搜索结果右键。

          2、命令行输入:net stop mysql;然后提示。服务停止中 --> 服务已停止,如出现其他错误请百度。

            这只是一个示例,请在服务中查看服务具体名称,比如我的就是mysql8.0.33。
            服务不会打开的请 win+R --> services.msc --> 回车,找到mysql开头的服务名。
          

          3、由于mysqld –skip-grant-tables实测在mysql8.0中已失效,现使用mysqld --console --skip-grant-tables --shared-memory

          4、另外开一个cmd,使用mysql直接无密登录。

          登陆成功后,继续按下面的流程走:

          四、设置新密码

          1.进入mysql数据库:

          mysql> use mysql;

          数据库报错1045-Access denied for user ‘root‘@‘localhost‘ (using password: YES)解决方式

          2.给root用户设置新密码:

          mysql> update user set authentication_string=password(“新密码”) where user=“root”;

          Query OK, 1 rows affected (0.01 sec)

          Rows matched: 1 Changed: 1 Warnings: 0

          数据库报错1045-Access denied for user ‘root‘@‘localhost‘ (using password: YES)解决方式

          PS: 如果出现以下错误:

          mysql> ERROR 1054 (42S22): Unknown column ‘password’ in ‘field list’

          是因为mysql数据库下已经没有password这个字段了,按照我的步骤把password字段改成了authentication_string。

          3.刷新数据库

          mysql> flush privileges;

          Query OK, 0 rows affected (0.00 sec)

          数据库报错1045-Access denied for user ‘root‘@‘localhost‘ (using password: YES)解决方式

          4.退出mysql:

          mysql> quit;

          Bye

          数据库报错1045-Access denied for user ‘root‘@‘localhost‘ (using password: YES)解决方式

          改好之后,保存退出再重启mysql服务,再重新用Navicat连接就可以了。

VPS购买请点击我

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

目录[+]