【问题标题】:Access denied for user 'root@localhost' (using password:NO)用户“root@localhost”的访问被拒绝(使用密码:否)
【发布时间】:2016-12-27 09:19:43
【问题描述】:

我是 MySQL 新手,我正在尝试在我的 Windows 桌面上运行 WordPress,它需要 MySQL。

我用微软提供的Web Platform Installer 安装所有东西。我从来没有为 MySQL 设置过 root 密码,在安装 WordPress 的最后一步,它会要求输入 MySQL 服务器密码。

root 的默认密码是什么(如果有的话)以及如何更改?

我试过了:

mysql -u root password '123'

但它告诉我:

Access denied for user 'root@localhost' (using password:NO)

之后我尝试:

mysql -u root -p

但是,它要求输入我没有的密码。


更新:按照 Bozho 的建议,我做了以下事情:

  1. 我从 Windows 服务中停止了 MySQL 服务
  2. 打开 CMD
  3. 将位置更改为 c:\program files\mysql\bin
  4. 执行下面的命令

    mysqld --defaults-file="C:\\program files\\mysql\\mysql server 5.1\\my.ini" --init-files=C:\\root.txt

  5. 该命令运行时出现关于我在下面提到的字符集的警告

  6. 我从 Windows 服务启动 MySQL 服务
  7. 我在命令行中写

    mysql -u root -p EnterPassword: 123 // 123 was the password

  8. 命令行显示如下错误

    Access denied for user 'root@localhost' (using password:**YES**)

我该如何解决这个问题?我在等你的消息。

【问题讨论】:

  • 第一个命令错误,应该是-p或者--password,而不是password。这就是 mysql 使用 USING PASSWORD NO 响应的原因。
  • 似乎没有人给他明确的答案。 root 用户标识的密码在初始安装后为空白。所以只需执行mysql -u root -p,然后按回车键,即将密码留空。然后当然在root用户ID上输入密码。
  • @RiggsFolly 不,不行!空白密码让我访问被拒绝!
  • 我想添加评论,因为我不确定接受的答案是否正确。对我来说,输入 mysql -u root -p 然后一旦提示输入密码,就给正确的密码(安装时设置的密码)。而是用我知道存在的数据库向 -p 证明数据库的名称不起作用。

标签: mysql wordpress mysql-error-1045


【解决方案1】:

确保 MySQL 服务正在您的机器上运行,然后按照 MySQL 的说明进行初始设置 root(搜索“windows”,它将带您进入设置 root 的步骤):

Securing the Initial MySQL Account

【讨论】:

  • 这个解决方案对我不起作用,因为我没有第二步所需的密码。
  • 这是我发送链接时正在查看的内容,您确定这不起作用吗?我没有看到对旧密码的任何引用。对于 Windows,执行以下操作: shell> mysql -u root mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpwd'); mysql> 为 'root'@'127.0.0.1' 设置密码 = PASSWORD('newpwd'); mysql> 为 'root'@'%' 设置密码 = PASSWORD('newpwd');
  • 正如我之前在写mysql -u root 时所说的那样,我遇到了问题,我无法登录 mysql 运行第二行。那么这个命令怎么用呢?
【解决方案2】:

如果您将端口更改为非标准端口,则需要指定它:

$connection = mysqli_connect('localhost:3308', 'root', '', 'loginapp');

【讨论】:

    【解决方案3】:

    如果 root 帐户存在但没有密码,则以 root 身份使用无密码连接到服务器,然后分配密码。这是我遇到这个问题时的情况。

    不使用密码以root身份连接到服务器:

    $> mysql -u root --skip-password
    

    分配密码:

    mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'root-password';
    

    我能够通过这种方式解决我的问题。希望这对将来遇到类似问题的人有所帮助。干杯!

    参考:https://dev.mysql.com/doc/refman/8.0/en/default-privileges.html

    【讨论】:

      【解决方案4】:

      这是出于安全原因。

      尝试以下方法

      mysql -u root -p    
      

      点击回车输入密码再试一次

      【讨论】:

        【解决方案5】:
        1. 将密码从config.inc.php 更改为C:\xampp\phpMyAdmin 中的密码。
        2. 在命令提示符中输入mysql -u root -p
        3. 您将被要求输入密码。输入您在config.inc.php 中更新的密码。

        【讨论】:

          【解决方案6】:

          更改密码后我收到错误的一些信息:

          拒绝用户“root”@“localhost”访问(使用密码:否)

          拒绝用户“root”@“localhost”访问(使用密码:YES)

          在这两种情况下都有错误。

          但事情是在那之后我已经尝试过了

          mysql -uroot -ppassword 而不是

          mysql -u root -p password -> -uroot 和 -ppassword 之间有空格,所以如果有人遇到麻烦可以尝试这种方式。

          【讨论】:

            【解决方案7】:

            使用mysql -u root -p 它会要求输入密码,输入密码并输入。

            【讨论】:

            • 这在我被拒绝访问用户之后工作。
            • 当上述所有方法都没有时,这有效。 (Mac os big sur,全新安装 MySQL 8)
            【解决方案8】:

            1) 您可以通过调用 MySQL 控制台设置 root 密码。它位于

            C:\wamp\bin\mysql\mysql5.1.53\bin 默认情况下。

            进入目录并输入 MySQL。然后设置密码如下..

                > SET PASSWORD FOR root@localhost = PASSWORD('new-password');
            

            2) 您可以通过编辑为root用户配置wamp的phpmyadmin应用程序

            C:\wamp\apps\phpmyadmin3.3.9\config.inc.php 
            

            注意:- 如果您使用的是 xampp,那么文件将位于

            C:\xampp\phpMyadmin\config.inc.php
            

            看起来像这样:

                    $cfg['Servers'][$i]['verbose'] = 'localhost';
                    $cfg['Servers'][$i]['host'] = 'localhost';
                    $cfg['Servers'][$i]['port'] = '';
                    $cfg['Servers'][$i]['socket'] = '';
                    $cfg['Servers'][$i]['connect_type'] = 'tcp';
                    $cfg['Servers'][$i]['extension'] = 'mysqli';
                    $cfg['Servers'][$i]['auth_type'] = 'config';
                    $cfg['Servers'][$i]['user'] = 'root';
                    $cfg['Servers'][$i]['password'] = 'YOURPASSWORD';
                    $cfg['Servers'][$i]['AllowNoPassword'] = false;
            

            错误“用户'root@localhost'的访问被拒绝(使用密码:NO)” 当您将$cfg['Servers'][$i]['AllowNoPassword'] 设置为false

            时将得到解决

            如果您私下更改了 'root@localhost' 的密码,那么您必须做 2 件事来解决错误“用户 'root@localhost' 的访问被拒绝”:

            1. 如果 ['password'] 有一个空引号,例如 ' ',则将您的密码放在引号之间。
            2. 将(使用密码:NO)更改为(使用密码:YES)

            这将解决错误。

            注意:phpmyadmin 是 wamp 自带的独立工具。 它只是为 MySQL 提供一个接口。如果您更改了我的 sql root 的密码,那么您应该更改 phpmyadmin 配置。通常 phpmyadmin 被配置为 root 用户。

            【讨论】:

            • 不,你不能.. mysql 将无法启动:c:\wamp64\bin\mysql\mysql5.7.23\bin>mysql 错误 1045 (28000): Access denied for user 'ODBC'@'localhost '(使用密码:否)
            • 为我工作!谢谢安德烈亚斯! :)
            【解决方案9】:

            如果您使用 XAMPP,只需转到 C:\xampp\phpMyAdmin 然后打开 config.inc.php 找到 $cfg['Servers'][$i]['password'] = '' 行并在那里输入您的密码。

            【讨论】:

              【解决方案10】:

              只需编辑 C:\xampp\mysql\bin 路径中的my.ini 文件。只需添加:

              skip-grant-tables
              

              # The MySQL server [mysqld]port=3306 之间的行。然后重启 MySQL 服务器。

              看起来像:

              【讨论】:

              • 当我这样做时,我得到另一个错误communications link failure
              【解决方案11】:

              对于这种错误;您只需以管理员身份为 root 用户设置新密码。请按照以下步骤操作:

              [root ~]# mysql -u root
              ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password:NO)
              
              1. 停止运行mysql的服务/守护进程

                [root ~]# service mysql stop   
                mysql stop/waiting
                
              2. 使用以下选项在没有任何权限的情况下启动 mysql; 该选项用于启动,不使用MySQL的权限系统。

                [root ~]# mysqld_safe --skip-grant-tables &
                

              此时,终端似乎停止了。顺其自然,然后使用新终端进行下一步。

              1. 进入mysql命令提示符

                [root ~]# mysql -u root
                mysql> 
                
              2. 修复root用户的权限设置;

                mysql> use mysql;
                Database changed
                mysql> select * from  user;
                Empty set (0.00 sec)
                mysql> truncate table user;
                Query OK, 0 rows affected (0.00 sec)
                mysql> flush privileges;
                Query OK, 0 rows affected (0.01 sec)
                mysql> grant all privileges on *.* to root@localhost identified by 'YourNewPassword' with grant option;
                Query OK, 0 rows affected (0.01 sec)
                

              *如果你不想要任何密码或者是一个空密码

                  mysql> grant all privileges on *.* to root@localhost identified by '' with grant option;
                  Query OK, 0 rows affected (0.01 sec)*
                  mysql> flush privileges;
                  Query OK, 0 rows affected (0.00 sec)
              

              确认结果:

                  mysql> select host, user from user;
              +-----------+------+
              | host      | user |
              +-----------+------+
              | localhost | root |
              +-----------+------+
              1 row in set (0.00 sec)
              
              1. 退出shell并以正常模式重新启动mysql。

                mysql> quit;
                [root ~]# kill -KILL [PID of mysqld_safe]
                [root ~]# kill -KILL [PID of mysqld]
                [root ~]# service mysql start
                
              2. 现在您可以使用您设置的密码以root用户身份成功登录

                 [root ~]# mysql -u root -pYourNewPassword 
                 mysql> 
                

              【讨论】:

              • 在“[root ~]# mysqld_safe --skip-grant-tables &”后回车,打开另一个终端输入“[root ~]# mysql -u root”
              • 我遇到了这个问题,我做了很多,只是忘记重新启动数据库服务......非常感谢!
              • 在第 3 步,我得到 ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
              • @MrMartin,创建该目录sudo mkdir -p /var/run/mysqld 并授予其权限sudo chown mysql:mysql /var/run/mysqld
              • 这个答案对我帮助很大!
              【解决方案12】:

              对于 MySQL 5.7。这些是以下步骤:

              完全停止您的 MySQL 服务器。这可以通过访问 Windows XP 和 Windows Server 2003 中的“服务”窗口来完成,您可以在其中停止 MySQL 服务。

              在“运行”窗口中使用“cmd”打开您的 MS-DOS 命令提示符。在其中导航到您的 MySQL bin 文件夹,例如 C:\MySQL\bin 使用 cd 命令。

              在命令提示符下执行以下命令:mysqld.exe -u root --skip-grant-tables

              保持当前 MS-DOS 命令提示符不变,并打开一个新的 MS-DOS 命令提示符窗口。

              使用 cd 命令导航到您的 MySQL bin 文件夹,例如 C:\MySQL\bin。

              输入mysql并回车。

              您现在应该可以使用 MySQL 命令提示符了。输入使用mysql;以便我们切换到“mysql”数据库。

              执行以下命令更新密码:

              更新用户集 authentication_string=password('1111') where user='root';

              【讨论】:

                【解决方案13】:

                我在 OS X El Captain 上遇到了同样的错误。 mysql 5.7 版。执行这些步骤后,我能够使用 root 连接到 mysql。

                停止mysql服务器

                sudo mysql.server stop
                

                以安全模式启动mysql

                sudo mysqld_safe --skip-grant-tables
                

                使用 mysqld,将数据库更改为 mysql 并更新用户“root”的详细信息。

                show databases;
                use mysql;
                UPDATE mysql.user 
                    SET authentication_string = PASSWORD('MyNewPass'), password_expired = 'N'
                    WHERE User = 'root' AND Host = 'localhost';
                exit;
                

                然后杀死'mysqld_safe'进程并正常启动mysql。您应该能够使用 root 和新密码登录到 mysql。 SQL docs for more details

                【讨论】:

                  【解决方案14】:

                  在您的代码中,将 'root' 替换为您的服务器 用户名,并将密码替换为您的服务器密码。 例如,如果您在服务器上有数据库和您的 php 文件 http://www.example.com 那么显然你必须使用你的用户名和密码进入这个服务器站点。

                  【讨论】:

                    【解决方案15】:

                    有时它只是由于安装 Wamp 或更改 root 用户的密码选项而发生。 可以使用特权-->root(用户),然后将密码选项设置为 NO 以在没有任何密码的情况下运行这些东西,或者设置密码并在应用程序中使用它。

                    【讨论】:

                      【解决方案16】:

                      如果有人收到错误的另一种解决方案用户帐户“root”的指定密码无效,或者无法连接到数据库服务器同样使用正确的密码,如下

                      •在Windows注册表中,删除HKCU\Software\Microsoft\WebPlatformInstaller下的mysql_pwd reg键

                      •卸载旧版本的 MySQL .NET 连接器

                      •下载并安装最新的MySql .NET Connector

                      【讨论】:

                      • 检查密码和数据库名称对我有用.. +1
                      【解决方案17】:
                      mysqladmin -u root -p password
                      

                      输入你的currentpassword

                      然后

                      输入您的new password

                      【讨论】:

                      • 重点是 OP 不知道当前密码,因为 从未设置过
                      • 我知道我的密码,但使用临时密码登录时遇到问题。这个答案对我有用
                      【解决方案18】:

                      您可以reset your root password。请记住,不建议使用没有密码的 root。

                      【讨论】:

                      • @Bozho - 我按照说明创建一个文本文件并从上述命令中调用它,然后我面对100608 [warning] --default-character-set is deprecated and will be removed in a future release. please use --character-set-server instead .------------- ------------------- 最后当我再次启动我的 mysql 服务时,我遇到了确切的错误,但这次是 (using password:yes) 我该怎么办?
                      • @Bozo - 请注意,我无法使用 mysqldt-nt 运行您的命令,我使用 mysqldt -nt 运行它实际上第一个命令无法识别 cmd。我在等你的消息。
                      • @Bozho - 我已经用这个错误更新了我的问题。谢谢你的时间。
                      • @Bozho - 有没有办法更新/自定义我的 mysql 错误? **将“用户'root@localhost'的访问被拒绝(使用密码:NO)”更新为“用户'myname@localhost'的访问被拒绝(使用密码:NO)”**
                      猜你喜欢
                      • 2012-06-17
                      • 1970-01-01
                      • 2017-07-10
                      • 2014-06-06
                      • 2017-12-20
                      • 2012-08-11
                      相关资源
                      最近更新 更多