用户'root @ localhost'的访问被拒绝(使用密码:NO)


115

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

我安装Web Platform Installer了Microsoft提供的所有内容。我从来没有为MySQL设置root密码,在安装WordPress的最后一步中,它要求输入MySQL服务器密码。

root的默认密码是多少(如果有),如何更改?

我试过了:

mysql -u root password '123'

但它显示了我:

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

在此之后,我尝试:

mysql -u root -p

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


更新:按照博佐的建议,我做了以下工作:

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

我该如何解决?我正在等待您的来信。


1
第一个命令是错误的,应该是-p--password,但不是password。这就是为什么mysql使用USING PASSWORD NO响应的原因。
Konerak 2010年

3
似乎没有人给他明显的答案。初始安装后,该root用户标识的密码为。因此,只需执行mysql -u root -p然后按Enter键即可,即将密码留空。然后,当然要在root用户标识上输入密码。
RiggsFolly 2015年

1
@RiggsFolly不,不起作用!空白密码使我无法访问!
J86

我想添加一条评论,因为我不确定接受的答案是否正确。对于我来说,键入mysql -u root -p,然后提示输入密码,然后输入正确的密码(安装时设置的密码)即可。而是用我知道存在的数据库向-p证明数据库的名称无效。
胭脂红Tambascia

Answers:


48

您可以重设root密码。请记住,不建议使用没有密码的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)我该怎么办?
Nasser Hadjloo 2010年

@Bozo -请注意,有我不能运行命令mysqldt-nt我通过运行mysqldt -ntActuallythe第一个不能被识别为CMD。我正在等待您的来信。
Nasser Hadjloo 2010年

@Bozho-我已经用错误更新了我的问题。感谢您的时间。
Nasser Hadjloo 2010年

@Bozho-有没有办法更新/自定义我的mysql错误?**将“拒绝访问用户'root @ localhost'(使用密码:否)”更新为“拒绝访问用户'myname @ localhost'(使用密码:否)” **
Hitesh,2016年

80

对于这种错误;您只需要以管理员身份为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. 退出外壳程序并以正常模式重启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> 

2
在“ [
root〜

我遇到了这个问题,我做了很多,只是忘了重启数据库服务...非常感谢!
李小龙

3
在第3步中,我得到ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
MrMartin '19

4
@MrMartin,创建该目录sudo mkdir -p /var/run/mysqld并授予该目录的权限sudo chown mysql:mysql /var/run/mysqld
niceday

这是对我有很大帮助的答案!
琼斯G

17

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;

设置$cfg['Servers'][$i]['AllowNoPassword']false时,将解决错误“拒绝访问用户'root @ localhost'(使用密码:NO)”

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

  1. 如果['password']带有空引号,例如'',则将密码放在引号之间。
  2. 将(使用密码:否)更改为(使用密码:是)

这样可以解决错误。

注意:phpmyadmin是wamp随附的单独工具。它只是提供与MySQL的接口。如果您更改了我的sql root用户的密码,则应该更改phpmyadmin配置。通常,将phpmyadmin配置为root用户。


不,您不能。.mysql无法启动:c:\ wamp64 \ bin \ mysql \ mysql5.7.23 \ bin> mysql错误1045(28000):用户'ODBC'@'localhost'的访问被拒绝(使用密码:NO)
Jaxx0rr

9

我在OS X El机长上遇到了相同的错误。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文档以获取更多详细信息


4

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

skip-grant-tables

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

好像:

屏幕截图


当我这样做时,我会遇到另一个错误communications link failure
艾哈迈德·侯赛因

3

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

http://dev.mysql.com/doc/refman/5.1/en/default-privileges.html


该解决方案对我不起作用,因为我没有第二步所需的密码。
Nasser Hadjloo 2010年

这是我发送链接时正在查看的内容,您确定这行不通吗?我看不到旧密码的任何参考。对于Windows,请执行以下操作:shell> mysql -u root mysql> SET PASSWORD FOR'root'@'localhost'= PASSWORD('newpwd'); mysql> SET PASSWORD FOR'root'@'127.0.0.1'= PASSWORD('newpwd'); mysql> SET PASSWORD FOR'root'@'%'= PASSWORD('newpwd');
sholsapp

1
正如我之前写的那样,mysql -u root我遇到问题,无法登录mysql运行第二行。那么如何使用此命令?
Nasser Hadjloo 2010年


2

如果有人得到错误另一种解决方案是以下步骤:为用户帐户“ root”指定的密码无效,或者使用正确的密码也无法连接到数据库服务器

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

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

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


检查密码和数据库名称对我
有用

2

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

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

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

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

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

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

输入mysql,然后按Enter键。

现在,您应该已经可以使用MySQL命令提示符。键入use mysql; 这样我们就切换到“ mysql”数据库。

执行以下命令以更新密码:

更新用户集authentication_string = password('1111'),其中user ='root';



1

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


1

有关某些信息,更改密码后出现错误:

用户'root'@'localhost'的访问被拒绝(使用密码:NO)

用户'root'@'localhost'的访问被拒绝(使用密码:是)

在两种情况下都存在错误。

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

mysql -uroot -ppassword 代替

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


0

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


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

0

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

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


-3
mysqladmin -u root -p password

输入您的 current password

然后

输入您的 new password


1
整个问题在于,OP 不知道当前密码,因为它从未设置过
Nateowami 2014年

我知道密码,但是使用临时密码登录时遇到问题。这个答案对我
Bernard
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.