【发布时间】:2017-08-02 04:43:10
【问题描述】:
我尝试了 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。
感谢任何帮助。
【问题讨论】:
-
您已添加密码,请使用
-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语法是否有原因?
标签: mysql