首页 >数据库 >mysql教程 >为什么 MySQL 会返回错误 1045:即使使用正确的凭据,访问也被拒绝?

为什么 MySQL 会返回错误 1045:即使使用正确的凭据,访问也被拒绝?

DDD
DDD原创
2024-12-17 04:28:25734浏览

Why Does MySQL Return Error 1045: Access Denied Even with Correct Credentials?

MySQL 错误 1045:尽管凭据正确,但用户 'bill'@'localhost' 的访问被拒绝

尝试访问远程 MySQL 数据库时通过命令行,用户偶尔可能会遇到“Error 1045: Access Denied for user 'bill'@'localhost'”消息,表明尽管提供了正确的登录凭据,连接仍被拒绝。

调查:

用户创建了一个名为“bill”的新用户,授予该用户所有必要的权限,然后退出 root 用户帐户。但是,随后尝试从本地计算机(“localhost”)以用户“bill”身份登录会导致错误。

根本原因:

通常,这出现此问题的原因是“mysql.user”表中存在匿名用户(用户名为空且“localhost”作为主机的用户)。从“本地主机”连接时,服务器会根据最具体的主机名或 IP 地址优先考虑匹配的用户帐户。

解决方案 1:删除匿名用户

解决方法问题,从 'mysql.user' 表中删除匿名用户:

DELETE FROM mysql.user WHERE user = '' AND host = 'localhost';

解决方案2(对于 MySQL 版本 >= 5.7):

如果使用 MySQL 5.7 或更高版本,您可以通过 'skip_name_resolve' 变量禁用匿名帐户:

SET GLOBAL skip_name_resolve = ON;

额外注意事项:

套接字连接:

在提供的示例中,用户通过套接字进行连接。确保正确指定“用户”和“密码”字段非常重要,因为在登录路径中配置的任何匿名用户都可能会覆盖提供的凭据。

TCP 连接:

通过 TCP 连接时,应使用 -h 标志来指定主机名或 IP 地址,而不是本地主机:

mysql -u bill -p -hremote_hostname

空用户名:

某些客户端库无法正确处理空用户名。应使用“@”符号代替“”来表示匿名用户:

mysql -u'@'localhost'-ppassword

以上是为什么 MySQL 会返回错误 1045:即使使用正确的凭据,访问也被拒绝?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn