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): 错误解决办法