MySql 错误 1045 (28000):用户“root”@“localhost”访问被拒绝(使用密码:NO)

问题描述 投票:0回答:12

我尝试了 StackOverflow 的多种解决方案,但没有取得任何成功。 我在 Mac OSX (Sierra 10.12.3) 上尝试创建新的数据库和用户。 从终端我输入:

mysql -u root

输出此错误:

错误 1045 (28000):用户“root”@“localhost”访问被拒绝(使用密码:NO)

为了尝试解决这个问题,我从“系统偏好设置”中停止了 mysql,然后从终端输入:

sudo mysqld_safe —skip-grant-tables

我打开了第二个选项卡并输入:

mysql -u root

然后从mysql中:

update mysql.user set password_expired = 'N', authentication_string=PASSWORD('newpassword') where user = 'root';

flush privileges;

然后我重新启动计算机(使用 CMD + C 杀死进程不起作用)。 重新启动后,尝试

mysql -u root
仍然会产生相同的错误。

我能够通过 MySQL 客户端和非 root 用户访问 mysql。

如有任何帮助,我们将不胜感激。

mysql
12个回答
49
投票

出于安全原因,mysql -u root 将无法工作,直到您在命令中传递 -p 为止,因此请尝试以下方式

 mysql -u root -p[Enter]
 //enter your localhost password

18
投票
mysql -u root -p;

mysql会要求输入密码


12
投票

确认一下:您确定您运行的是 MySQL 5.7,而不是 MySQL 5.6 或更早版本。并且插件列包含“mysql_native_password”。 (在MySQL 5.7之前,密码哈希存储在名为password的列中。从MySQL 5.7开始,密码列被删除,密码存储在authentication_string列中。)并且您还验证了authentication string的内容与 PASSWORD('mysecret') 的返回值匹配。另外,我们对 mysql.user 表使用 DML 而不是使用 SET PASSWORD FOR 语法是否有原因? – spencer7593

所以基本上只需确保插件列包含“mysql_native_password”。

不是我的工作,但我阅读了评论并注意到这被声明为答案,但尚未作为可能的答案发布。


6
投票

只需使用:

$ sudo mysql

没有“-u root”参数。


4
投票

如果因为某种原因需要跳过密码提示,可以在命令中输入密码(危险)

mysql -u root --password=secret

1
投票

您必须通过 XAMPP 文件夹中的 xampp-controle.exe 运行 mysql。登录后:

mysql -u root

1
投票

是否有可能 root 密码不是您想象的那样?您是否检查过 /root/.mysql_secret 文件中的密码?这是从版本 5.7 开始生成的自动 root 密码的默认位置。

cat /root/.mysql_secret

0
投票

尝试这个(在Windows上,我不知道在其他系统上如何),如果你已经更改了密码,现在不起作用。

1)杀死mysql 2)备份/mysql/data文件夹 3)转到文件夹/mysql/backup 4)将文件从/mysql/backup/mysql文件夹复制到/mysql/data/mysql(重写) 5)运行mysql

在我的 Win7 上的 XAMPP 中它可以工作。


0
投票

@Niagaradad 的评论对我有帮助。我一直输入错误的密码。

注意错误消息

错误 1045 (28000):用户“ayaz”@“localhost”访问被拒绝(使用密码:YES)

它说,密码:是。这意味着我将密码发送到 SQL,但这是错误的。

通常

root 帐户没有密码(如果您没有设置密码)。如果你已经通过自制程序安装了mysql那么root帐户将没有密码。

这是评论。

所以,不完全一样。 NO 表示您没有向 MySQL 发送密码。 YES 表示您正在向 MySQL 发送密码,但密码不正确。你安装MySQL的时候有没有专门给mysql root用户设置密码?默认情况下没有密码,因此您可以使用 mysql -u root -p 并按 Enter 键。


0
投票
就我而言,我需要在我的 AWS RDS 实例上

Edit Inbound Rules

 才能接受 
All Traffic
。否则,默认的 
TCP/IP
 约束会阻止我从本地计算机创建数据库。


0
投票
  1. 在“

    初始化数据库”中更新您的密码。

  2. 系统偏好设置 -> 单击 MySql(左下角或搜索) -> 单击停止 MySql Server -> 单击初始化数据库并更新密码。

  3. 密码更新后,单击“启动 MySql Server”

  4. 打开终端并运行“mysql -u root -p”并提供更新的密码。


0
投票
如果您使用 Mariadb+Ubuntu,这里是解决方案:

需要一一打开两个终端:

  1. 打开第一个终端并输入

    sudo systemctl 停止 mariadb

    sudo mysqld_safe --skip-grant-tables &

  2. 现在您需要在另一个终端中打开重复会话,然后输入:

    mysql

  3. 现在输入:

    同花特权; 更改用户'root'@'localhost'由''识别; 退出;

  4. 现在在现有终端中输入:

    sudo mysqladmin shutdown && sudo systemctl 启动 mariadb && 退出

  5. 在第一个终端中按 (Ctrl+c) 停止。

  6. 现在输入 mysql 你就可以访问了。

© www.soinside.com 2019 - 2024. All rights reserved.