ERROR 1045 (28000) Access denied for user ‘root‘@‘localhost‘ (using password YESNO)
作者:mmseoamin日期:2023-12-14

问题描述

在使用命令行登录 MySQL 时出现了下述问题:

ERROR 1045 (28000) Access denied for user ‘root‘@‘localhost‘ (using password YESNO),image-20230202014159532,第1张

或:ERROR 1045 (28000): Access denied for user ‘root’@‘localhost’ (using password: NO)

出错原因

  • using password: NO:表示输入没有输入密码就尝试登陆了
  • using password: YES:表示输入了密码,但密码错误

    所以,很有可能是忘记密码了,因此需要重设密码。

    解决方案:修改密码

    一、MySQL 5.7版本

    Step 1:跳过MySQL密码验证

    ​ 找到 MySQL 的配置文件 “my.ini”,找到 [mysqld],在其下面任意一行添加 skip-grant-tables,保存,如下图所示

    ERROR 1045 (28000) Access denied for user ‘root‘@‘localhost‘ (using password YESNO),image-20230202014721490,第2张

    注:my.ini”文件可能在目录 C:\ProgramData\MySQL 下。

    Step 2

    重启 MySQL 服务。

    Step 3:无密码登录MySQL

    • 找到 MySQL 安装目录下的 bin 目录,地址栏输入 cmd,然后回车,如下图所示:

      ERROR 1045 (28000) Access denied for user ‘root‘@‘localhost‘ (using password YESNO),image-20230202015114665,第3张

      附:如果已经为 MySQL 8.0 配置了环境变量,就可以在任意位置打开 cmd。

    • 输入 mysql -u root -p 回车后会显示输入密码,直接不管,再次回车,不要关闭命令行,如下图所示:

      ERROR 1045 (28000) Access denied for user ‘root‘@‘localhost‘ (using password YESNO),image-20230202013745050,第4张

      Step 4:将登录密码设置为空

      ​ 在上一步的命令行中依次输入:① use mysql;② update user set authentication_string='' where user='root';③ quit;。如下图所示:

      ERROR 1045 (28000) Access denied for user ‘root‘@‘localhost‘ (using password YESNO),image-20230202015751462,第5张

      Step 5:更改登录密码

      • 关闭上一个命令行
      • 重启 MySQL 服务
      • 打开新的 cmd 命令行,并输入 mysql -u root -p 后回车、回车(连续两次回车)
      • 刷新权限,输入 flush privileges; 后回车
      • 最后输入 ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码'; 后回车

        笔者将密码重置为 root,如下图所示:

        ERROR 1045 (28000) Access denied for user ‘root‘@‘localhost‘ (using password YESNO),image-20230202020141575,第6张

        Step 6:重新设置MySQL密码验证

        与第一步相反,删除之前添加的“skip-grant-tables”即可。

        🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀

        🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀

        🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀

        一、MySQL 8.x版本

        Step 1

        停止 MySQL 服务。

        Step 2

        创建一个名为 mysql-init.txt 的文本文件,里面有一行内容 ALTER USER 'root'@'localhost' IDENTIFIED BY '你想设置的密码';,然后保存。

        说明:

        • 后续会调用这个文件,以设置为 ‘你想设置的密码’。
        • 这个文件可以放在任意路径下,为便于后续的步骤,笔者直接放在 C 盘根目录下了。

        Step 3

        • 以管理员身份运行 cmd

          步骤:搜索 cmd → 右键 → 以管理员身份运行

          ERROR 1045 (28000) Access denied for user ‘root‘@‘localhost‘ (using password YESNO),image-20230202141650442,第7张

          打开后,如下图所示:

          ERROR 1045 (28000) Access denied for user ‘root‘@‘localhost‘ (using password YESNO),image-20230202141809028,第8张

        • 切换到 MySQL 8.0 程序所在的 bin 目录,如下图所示

          ERROR 1045 (28000) Access denied for user ‘root‘@‘localhost‘ (using password YESNO),image-20230202142006979,第9张

        • 输入 mysqld --defaults-file="C:\ProgramData\MySQL\MySQL Server 8.0\my.ini" --init-file=C:\\mysql-init.txt

          输入的命令分为三部分,如下图所示:

          ERROR 1045 (28000) Access denied for user ‘root‘@‘localhost‘ (using password YESNO),image-20230202142345856,第10张

          • ① MySQL 8.0 版本的服务 → 右键 → 属性 → 可执行路径 → 选择与 ① 对应的内容,复制

            ERROR 1045 (28000) Access denied for user ‘root‘@‘localhost‘ (using password YESNO),image-20230202142617912,第11张

            ERROR 1045 (28000) Access denied for user ‘root‘@‘localhost‘ (using password YESNO),image-20230202142740635,第12张

            • ③ --init-file= + mysql-init.txt 文件所在的路径。笔者直接保存在 C 盘根目录下了,所以此条命令为 --init-file=C:\mysql-init.txt
            • ③ 在 ① 和 ② 之间有一个空格。
        • 输入完上述命令后,回车。发现光标停留在空行上,这说明修改成功,如下图所示:

          ERROR 1045 (28000) Access denied for user ‘root‘@‘localhost‘ (using password YESNO),image-20230202143351546,第13张

        • 关闭当前命令行,必须关闭,否则无法启动 MySQL 服务,如下图所示:

          ERROR 1045 (28000) Access denied for user ‘root‘@‘localhost‘ (using password YESNO),image-20230202143727036,第14张

        • 删除 mysql-init.txt 文件

          最后的最后,重新登录一下,看是否重置成功。(不要忘记启动 MySQL 服务)

          参考:

          [1] https://dev.mysql.com/doc/refman/8.0/en/resetting-permissions.html

          [2] https://www.jb51.net/article/215881.htm

          [3] https://blog.csdn.net/Fatelzg/article/details/120207664

          [4] https://blog.csdn.net/qq_52572621/article/details/127105324