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

时间:2017-03-11 23:52:37

标签: mysql

我尝试过StackOverflow的多个解决方案,但没有取得任何成功。我在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。

感谢任何帮助。

10 个答案:

答案 0 :(得分:31)

出于安全原因,mysql -u root不会工作,直到你在命令中传递-p所以尝试以下方式

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

答案 1 :(得分:8)

  

只是为了确认:您确定您运行的是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语法?     - spencer7593

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

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

答案 2 :(得分:7)

mysql -u root -p;

mysql会要求输入密码

答案 3 :(得分:4)

只需使用:

$ sudo mysql

没有" -u root"参数。

答案 4 :(得分:2)

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

mysql -u root

答案 5 :(得分:1)

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

  val two = xs.filter {case (s, e) => e.isDefined}
    .map {case (s, e) => (e, s.indexOf(e.get)) }
    .filter {case (e, i) => i > 0}

答案 6 :(得分:1)

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

mysql -u root --password=secret

答案 7 :(得分:0)

试试这个(在Windows上,我不知道其他人如何),如果你更改了密码,那么现在就不能工作。

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

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

答案 8 :(得分:0)

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

注意错误消息

  

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

它说,密码:是的。这意味着我正在向SQL发送密码,这是错误的。

通常 root帐户没有密码(如果您未设置密码)。如果您已通过自制程序安装了MySQL ,则 root帐户将没有密码。

这里是评论。

  

所以,那不完全相同。否表示您没有向MySQL发送密码。是,表示您正在向MySQL发送密码,但密码不正确。在安装MySQL时,您是否专门为mysql根用户设置了密码?默认情况下,没有密码,因此您可以使用mysql -u root -p并按Enter。

答案 9 :(得分:0)

就我而言,我需要在我的 AWS RDS 实例上 RESHAPING DATA TO - (398, 406) (398, 1) 接受 Edit Inbound Rules。否则,默认的 All Traffic 约束阻止我从本地计算机创建数据库。