栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

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

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

MySQL错误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
,但我已经被授予匿名用户访问权限。这是由于上面建议的“排序规则”。请注意,在大多数默认安装中,存在无密码的匿名用户(并且应予以保护/删除)。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/371086.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号