MySQL用户名和密码都正确却无法登陆的问题

本文介绍了一种MySQL登录失败的情况及解决方法。问题出现在创建新用户并尝试登录时遇到权限拒绝错误,原因是系统中存在匿名用户导致认证冲突。通过删除匿名用户后问题得到解决。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天使用MySQL时,我创建了一个新用户:
CREATE USER 'ubermensch'@'%' IDENTIFIED BY 'man2017';
然后登陆该用户时却一直报错(密码正确):
C:\Users\超人林>mysql -u ubermensch -p
Enter password: *******
ERROR 1045 (28000): Access denied for user 'ubermensch'@'localhost' (using password: YES)

后来翻阅网上资料发现MySQL中默认存在一个用户名为空的账户,只要在本地,可以不用输入账号密码即可登录到MySQL中。mysql在验证用户登陆的时候,首先是验证host列,如果host列在验证user列,再password列,而现在按照我之前的连接语句:按照host列找到为空的那列(空匹配所有用户名),所以匹配到了这条记录,然后发现这条记录的密码为空,而我的语句里面有密码,那么就会报错。
解决办法:删除匿名用户。

mysql> use mysql;
Database changed
mysql> delete from user where user='';
Query OK, 1 row affected (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
mysql> exit;

然后就可以登陆用户了:

mysql -u ubermensch -p
Enter password: *******
Welcome to the MySQL monitor.
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值