首先让我提一下,我已经看了很多建议的问题,但没有找到相关的答案。这就是我正在做的。

我连接到Amazon EC2实例。我可以用这个命令登录MySQL根目录:

mysql -u root -p

然后我用host %创建了一个新的用户帐单

CREATE USER 'bill'@'%' IDENTIFIED BY 'passpass';

授予用户bill的所有权限:

grant all privileges on *.* to 'bill'@'%' with grant option;

然后我退出root用户,尝试用bill登录:

mysql -u bill -p

输入正确的密码并得到以下错误:

错误1045(28000):用户“账单”@“localhost”(使用密码:YES)的访问被拒绝


当前回答

对我来说,这个问题是由MySQL 5.7.2的一个新特性引起的:如果用户的插件字段为空,用户条目将被忽略。

设置为mysql_native_password以重新启用它们:

UPDATE user SET plugin='mysql_native_password' WHERE user='foo';
FLUSH PRIVILEGES;

请参阅MySQL 5.7.2的发布说明,在«Authentication notes»下。

由于某些原因(可能是因为我在4.1之前的密码散列被删除了),mysql_upgrade脚本没有设置默认的插件值。

我是通过注意/var/log/mysql/error.log中的以下警告消息发现的:

[警告]用户条目“foo”@“%”的插件值为空。该用户将被忽略,任何人都不能再使用该用户登录。

我把这个答案贴在这里,也许是为了让别人不用像我一样花那么多荒谬的时间来研究这个问题。

其他回答

只是想让你知道一个不寻常的情况下,我收到了同样的错误。也许这在将来会对某些人有所帮助。

我开发了一些基本视图,在开发站点创建,并将它们转移到生产站点。那周晚些时候,我修改了一个PHP脚本,突然出现了一个错误,用户“local-web-user”@“localhost”的访问被拒绝。数据源对象没有改变,所以我把注意力集中在MySQL中的数据库用户上,同时担心有人入侵我的网站。幸运的是,遗址的其他部分似乎没有受到损害。

后来证明,这些观点才是罪魁祸首。我们的对象传输是使用本地网站用户以外的另一个用户(并且是远程:admin@ip-address)完成的。因此,视图是用'admin'@'ip-address'作为定义符创建的。视图创建SECURITY default为

SQL SECURITY DEFINER

当local-web-user试图使用视图时,它会偶然发现定义者缺乏使用表的特权。一旦安全性更改为:

SQL SECURITY INVOKER

问题解决了。实际问题与基于错误消息的预期完全不同。

我希望你在mysql中删除debian-sys- maintenance用户没有造成更大的损害

让你的mysql守护进程正常运行。启动mysql客户端,如下所示

mysql -u debian-sys-maint -p

在另一个终端,cat /etc/mysql/debian.cnf文件。该文件包含密码;当提示输入密码时,粘贴该密码。

http://ubuntuforums.org/showthread.php?t=1836919

我也遇到了类似的问题——当我第一次尝试以root用户登录MySQL时,它告诉我访问被拒绝。原来我忘了用sudo…

所以,如果你第一次尝试root失败了,试试:

sudo mysql -u root -p

然后输入密码,就可以了。

对我来说,这个问题是由MySQL 5.7.2的一个新特性引起的:如果用户的插件字段为空,用户条目将被忽略。

设置为mysql_native_password以重新启用它们:

UPDATE user SET plugin='mysql_native_password' WHERE user='foo';
FLUSH PRIVILEGES;

请参阅MySQL 5.7.2的发布说明,在«Authentication notes»下。

由于某些原因(可能是因为我在4.1之前的密码散列被删除了),mysql_upgrade脚本没有设置默认的插件值。

我是通过注意/var/log/mysql/error.log中的以下警告消息发现的:

[警告]用户条目“foo”@“%”的插件值为空。该用户将被忽略,任何人都不能再使用该用户登录。

我把这个答案贴在这里,也许是为了让别人不用像我一样花那么多荒谬的时间来研究这个问题。

对我来说,root有一个默认密码

我用ALTER USER 'root'@'localhost' IDENTIFIED BY 'new password '修改密码;这个方法奏效了