首先,我要提一提,我经历了许多建议的问题,没有找到任何相关的答案。这是我在做什么。
我已连接到我的Amazon EC2实例。我可以使用以下命令以MySQL root登录:
mysql -u root -p
然后我用主机%创建了一个新的用户账单
CREATE USER 'bill'@'%' IDENTIFIED BY 'passpass';
授予用户帐单所有特权:
grant all privileges on *.* to 'bill'@'%' with grant option;
然后,我从root用户退出并尝试使用bill登录:
mysql -u bill -p
输入正确的密码并收到此错误:
错误1045(28000):用户’bill’@’localhost’的访问被拒绝(使用密码:是)
您可能有一个匿名用户''@'localhost'
或''@'127.0.0.1'
。
按照手册:
当可能有多个匹配项时,服务器必须确定要使用哪个匹配项。它可以解决此问题,如下所示:(…)
- 客户端尝试连接时,服务器 将按 排序顺序浏览 [表mysql.user] 的行。
- 服务器使用与客户端主机名和用户名匹配的第一行。
(…)服务器使用排序规则,该规则首先对具有 最特定Host值的 行进行排序。文字主机名 [例如’localhost’]
和IP地址是最具体的。
因此,这样的匿名用户会像“ '[any_username]'@'%'
从” 连接时那样“屏蔽”任何其他用户localhost
。
'bill'@'localhost'
确实匹配'bill'@'%'
,但是会''@'localhost'
事先匹配(例如)。
推荐的解决方案是删除该匿名用户(无论如何通常这样做是一件好事)。
下面的编辑与主要问题无关。 这些仅用于回答此主题中其他注释中提出的一些问题。
编辑1
'bill'@'%'
通过套接字进行身份验证。
root @ myhost:/home/mysql-5.5.16-linux2.6-x86_64# ./mysql -ubill -ppass --socket = / tmp / mysql-5.5.sock
欢迎使用MySQL监视器(...)
mysql> SELECT用户,主机FROM mysql.user;
+ ------ + ----------- +
| 用户| 主机|
+ ------ + ----------- +
| 帐单| %|
| 根| 127.0.0.1 |
| 根| :: 1 |
| 根| 本地主机|
+ ------ + ----------- +
设置4行(0.00秒)
mysql> SELECT USER(),CURRENT_USER();
+ ---------------- + ---------------- +
| USER()| CURRENT_USER()|
+ ---------------- + ---------------- +
| bill @ localhost | 帐单@%|
+ ---------------- + ---------------- +
设置1行(0.02秒)
mysql>显示变量,例如“ skip_networking”;
+ ----------------- + ------- +
| 变量名| 价值|
+ ----------------- + ------- +
| skip_networking | 开|
+ ----------------- + ------- +
设置1行(0.00秒)
编辑2
完全相同的设置,除了我重新激活了网络,现在我创建了一个匿名用户''@'localhost'
。
root @ myhost:/home/mysql-5.5.16-linux2.6-x86_64# ./mysql
欢迎使用MySQL监视器(...)
mysql> CREATE USER``@'localhost'由'anotherpass'标识;
查询正常,受影响的0行(0.00秒)
mysql>再见
root @ myhost:/home/mysql-5.5.16-linux2.6-x86_64# ./mysql -ubill -ppass \
--socket = / tmp / mysql-5.5.sock
错误1045(28000):用户'bill'@'localhost'的访问被拒绝(使用密码:是)
root @ myhost:/home/mysql-5.5.16-linux2.6-x86_64# ./mysql -ubill -ppass \
-h127.0.0.1 --protocol = TCP
错误1045(28000):用户'bill'@'localhost'的访问被拒绝(使用密码:是)
root @ myhost:/home/mysql-5.5.16-linux2.6-x86_64# ./mysql -ubill -ppass \
-hlocalhost --protocol = TCP
错误1045(28000):用户'bill'@'localhost'的访问被拒绝(使用密码:是)
编辑3
与编辑2中的情况相同,现在提供了匿名用户的密码。
root @ myhost:/home/mysql-5.5.16-linux2.6-x86_64# ./mysql -ubill -panotherpass -hlocalhost
欢迎使用MySQL监视器(...)
mysql> SELECT USER(),CURRENT_USER();
+ ---------------- + ---------------- +
| USER()| CURRENT_USER()|
+ ---------------- + ---------------- +
| bill @ localhost | @localhost |
+ ---------------- + ---------------- +
套装1行(0.01秒)
结论1,来自编辑1:可以'bill'@'%'
通过套接字进行身份验证。
结论2,摘自编辑2:无论是通过TCP还是通过套接字进行连接都不会对身份验证过程产生影响('something'@'localhost'
显然,除了通过套接字以外,其他任何人都不能进行连接)。
结论3,来自编辑3:尽管我指定了-ubill
,但我已经被授予匿名用户访问权限。这是由于上面建议的“排序规则”。请注意,在大多数默认安装中,存在无密码的匿名用户(并且应予以保护/删除)。
在Ubuntu 20.04终端中运行MySQL时,我遇到以下错误: MySQL错误1045 (28000):用户“rakesh”@“localhost”的访问被拒绝(使用密码:NO) 如何修复这个错误?
问题内容: 我是一名电气工程师,主要研究电源系统而不是编程。最近,我一直在遵循手册在Ubuntu上安装软件套件。实际上,我一点也不了解。我已经在Ubuntu上完成了以下安装。 那我做 我最终收到以下错误消息。 我该如何修复并继续? 问题答案: 注意: 对于 MySQL 5.7+, 请参阅@Lahiru对此问题的回答。那包含更多当前信息。 对于MySQL <5.7: 默认的root密码为空白(即空字
我尝试了StackOverflow的多种解决方案,但没有任何成功。我正在Mac OSX(Sierra 10.12.3)上尝试创建一个新的数据库和用户。我从终点站进入: 输出此错误: 错误1045(28000):拒绝用户“root”@"localhost“的访问(使用密码:NO) 我可以通过mysql客户端和非root用户访问mysql。 感谢任何帮助。
我无法登录MySQL。我以为密码错了,于是我试图更改密码。。 它不需要更改密码。因为密码是正确的。密码是正确的,但我仍然无法登录mysql。为什么?请帮帮我,谢谢。我试过很多方法。 (或dpkg重新配置mysql-server-5.5) 错误日志http://pastebin.com/HN2tGhJJ etc/mysql/my.cfhttp://pastebin.com/cMSdGUei 我试过了
错误1045(28000):拒绝用户'root'@'localhost'的访问(使用密码:Y ES) 这个错误是什么意思?
我无法访问我最近创建的数据库。我曾多次尝试刷新权限,但无法重置密码以获得访问权限。 在输入然后输入我认为应该是正确的密码后,我在命令行上尝试访问它时出现以下错误: 错误1045(28000):用户“rails\u user”@“localhost”的访问被拒绝(使用密码:是) 这是我的数据库。yml: 另外,当我输入: