拒绝访问用户‘ root@localhost’(使用密码: NO)

我是 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**)

我该怎么解决,我在等你的消息。

1073713 次浏览

您可以使用 重置你的根密码。请记住,在没有密码的情况下使用 root 是不可取的。

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

保护初始 MySQL 帐户

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;

错误“ Access 拒绝用户‘ root@localhost’(使用密码: NO)” 将 $cfg['Servers'][$i]['AllowNoPassword']设置为 < strong > false 时将被解析

如果您之前更改了“ root@localhost”的密码,那么您必须做两件事来解决“ Access denid for user‘ root@localhost’”错误:

  1. 如果[‘ password’]有一个像 ' '这样的空引号,那么把你的密码放在两个引号之间。
  2. 将(使用密码: NO)改为(使用密码: YES)

这将解决错误。

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

mysqladmin -u root -p password

输入你的 current password

那么

输入你的 new password

另一个解决方案,如果有人得到的错误 用户帐户“ root”的指定密码无效,或连接到数据库服务器失败也与正确的密码,是以下

•在 Windows 注册表中,删除 HKCU Software MicrosoftWebPlatformInstaller 下的 mysql _ pwd reg 密钥

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

‧下载及安装最新的 网络连接器

对于此类错误,您只需将新密码设置为 root 用户作为管理员即可。遵循以下步骤:

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

     [root ~]# service mysql stop
    mysql stop/waiting
    
  2. 使用以下选项启动 mysql,不需要任何权限; 此选项用于启动,不使用 MySQL 的特权系统。

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

此时,终端似乎停止了 。就这样吧,下一步使用新的终端。

  1. 输入 mysql 命令提示符

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

     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>
    

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

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

我在 OS X El 上也出现了同样的错误。 在执行这些步骤之后,我能够使用 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 文档

对于 MySQL 5.7,以下是步骤:

完全停止 MySQL 服务器。这可以通过访问 WindowsXP 和 WindowsServer2003中的“服务”窗口来完成,在这里您可以停止 MySQL 服务。

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

在命令提示符中执行以下命令: mysqld.exe-u root —— Skip-Grant-tables

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

使用 cd 命令导航到 MySQLbin 文件夹,例如 C: MySQLbin。

输入 mysql 并按 Enter。

现在 MySQL 命令提示符应该可以工作了。输入 use MySQL; 这样我们就可以切换到“ MySQL”数据库。

执行以下命令更新密码:

Update user set entication _ string = password (’1111’) ,其中 user = ‘ root’;

只需在 C: xampp mysql bin 路径中编辑 my.ini文件,只需添加:

skip-grant-tables

然后重新启动 MySQL 服务器。

看起来像:

Screenshot

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

使用 mysql-u root-p 它将询问密码,插入密码并输入。

对于一些信息,我在更改密码后出现了错误:

拒绝访问用户‘ root’@‘ localhost’(使用密码: NO)

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

这两种情况都存在错误。

但问题是之后我试过了

mysql -uroot -ppassword代替

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

  1. C:\xampp\phpMyAdmin中的 config.inc.php更改密码。
  2. 在命令提示符中键入 mysql -u root -p
  3. 您将被要求输入密码。请输入您在 config.inc.php中更新的密码。

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

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

这是出于安全考虑。

尝试以下方法

mysql -u root -p

单击 Enter 并输入密码,然后再试一次

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

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

$> mysql -u root --skip-password

设定密码:

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

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

参考文献: < a href = “ https://dev.mysql.com/doc/refman/8.0/en/default-vilites.html”rel = “ nofollow norefrer”> https://dev.mysql.com/doc/refman/8.0/en/default-privileges.html