我尝试过StackOverflow的多个解决方案,但没有取得任何成功.我正在Mac OSX(Sierra 10.12.3)上尝试创建一个新的数据库和用户.从终端我输入:
mysql -u root
Run Code Online (Sandbox Code Playgroud)
输出此错误:
ERROR 1045(28000):用户'root'@'localhost'拒绝访问(使用密码:否)
为了尝试解决它,我从'系统偏好设置'中停止了mysql,然后从终端输入:
sudo mysqld_safe —skip-grant-tables
Run Code Online (Sandbox Code Playgroud)
我打开第二个标签并输入:
mysql -u root
Run Code Online (Sandbox Code Playgroud)
然后从mysql中:
update mysql.user set password_expired = 'N', authentication_string=PASSWORD('newpassword') where user = 'root';
flush privileges;
Run Code Online (Sandbox Code Playgroud)
然后我重新启动计算机(使用CMD + C杀死进程不起作用).重新启动后,尝试mysql -u root仍然会产生相同的错误.
我可以通过MySQL客户端和非root用户访问mysql.
任何帮助表示赞赏.
Pra*_*til 34
出于安全原因,mysql -u root不会工作,直到您在命令中传递-p,请尝试以下方式
mysql -u root -p[Enter]
//enter your localhost password
Run Code Online (Sandbox Code Playgroud)
小智 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".
不是我的工作,但我读了评论,并注意到这被作为答案陈述,但尚未作为可能的答案发布.
只需使用:
$ sudo mysql
Run Code Online (Sandbox Code Playgroud)
不带“ -u root”参数。