MySql ERROR 1045 (28000): Access denied for user 'root'@'localhost' (使用密码: NO)

Posted

技术标签:

【中文标题】MySql ERROR 1045 (28000): Access denied for user \'root\'@\'localhost\' (使用密码: NO)【英文标题】:MySql ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)MySql ERROR 1045 (28000): Access denied for user 'root'@'localhost' (使用密码: NO) 【发布时间】:2017-08-02 04:43:10 【问题描述】:

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

mysql -u root

输出此错误:

ERROR 1045 (28000): 用户 'root'@'localhost' 的访问被拒绝(使用密码:否)

为了尝试解决它,我从“系统偏好设置”中停止了 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。

感谢任何帮助。

【问题讨论】:

您已添加密码,请使用-p 并添加密码。 @Stony 我试过了,但它不起作用。输入我的密码后,我得到了同样的错误。 一模一样同样的错误? 所以,不完全一样。 NO 表示您没有向 MySQL 发送密码。 YES 表示您正在向 MySQL 发送密码,但密码不正确。安装 MySQL 的时候有没有专门给 mysql root 用户设置密码?默认情况下没有密码,所以你可以使用 mysql -u root -p 然后回车。 只是为了确认:您确定您运行的是 MySQL 5.7,而不是 MySQL 5.6 或更早版本。插件列包含“mysql_native_password”。 (在 MySQL 5.7 之前,密码哈希存储在名为 password 的列中。从 MySQL 5.7 开始,密码列被删除,密码存储在 authentication_string 中列。)并且您还验证了身份验证字符串的内容与 PASSWORD('mysecret') 的返回匹配。另外,我们对 mysql.user 表使用 DML 而不是使用 SET PASSWORD FOR 语法是否有原因? 【参考方案1】:

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

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

【讨论】:

谢谢,但我尝试过使用和不使用 -p 参数,没有区别。 @spencer7583 解决了这个问题。【参考方案2】:
mysql -u root -p;

mysql 会要求输入密码

【讨论】:

嗨,我正在尝试删除并重新安装 xamp 以允许远程访问(因为我遇到了很多对 mysql 的访问问题)。我已经删除了xamp,但无法删除mysql。在我的情况下,唯一适用于 mysql 的命令是你的 你能帮忙吗?【参考方案3】:

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

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

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

【讨论】:

【参考方案4】:

只需使用:

$ sudo mysql

没有“-u root”参数。

【讨论】:

使用此命令,然后我会提示我输入密码。我输入它并得到同样的错误。【参考方案5】:

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

mysql -u root --password=secret

【讨论】:

【参考方案6】:

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

mysql -u root

【讨论】:

我没有使用 XAMPP 或 Windows。 好的,你必须控制mysql是否运行。 不确定这是什么意思。 mysql 运行了吗? 是的 MySQL 正在运行。【参考方案7】:

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

cat /root/.mysql_secret

【讨论】:

【参考方案8】:

试试这个(在 Windows 上,我不知道在其他系统上如何),如果你更改了密码,现在就不行了。

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

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

【讨论】:

【参考方案9】:

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

注意错误信息

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

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

如果您没有设置密码,通常root 帐户没有密码。如果您通过自制软件安装了 mysql,那么 root 帐户将没有密码。

这是评论。

所以,不完全一样。 NO 表示您没有向 MySQL 发送密码。 YES 表示您正在向 MySQL 发送密码,但密码不正确。安装 MySQL 的时候有没有专门给 mysql root 用户设置密码?默认没有密码,所以你可以使用 mysql -u root -p 然后回车。

【讨论】:

【参考方案10】:

就我而言,我需要在我的 AWS RDS 实例上 Edit Inbound Rules 接受 All Traffic。默认的TCP/IP 约束阻止我从本地计算机创建数据库。

【讨论】:

以上是关于MySql ERROR 1045 (28000): Access denied for user 'root'@'localhost' (使用密码: NO)的主要内容,如果未能解决你的问题,请参考以下文章

mysql ERROR 1045 (28000): 错误解决办法

mysql ERROR 1045 (28000): 错误解决办法

mysql登录时,ERROR 1045 (28000): 错误解决办法

mysql ERROR 1045 (28000): 错误解决办法

MySQL ERROR 1045 (28000)

centos环境下登录mysql报 ERROR 1045 (28000)怎么解决