mysql登录用户验证遇到的问题 access denied for user ‘user’@'localhost'

本文探讨了在MySQL中配置权限时遇到的Access denied错误,详细解释了问题产生的原因,包括登录验证过程、匿名用户匹配以及密码一致性的重要性,并提供了通过修改配置文件和数据库表来解决问题的方法。

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


My local 10.20.12.190  mysql -uhellow -h 10.20.72.190 -p rrt147

Or mysql -uroot -prrt147     

用户hellow  配对ip10.20.72.143使用

Root 配对localhost使用。错位不行。Why

 

 

下面的spring配置是不行的,Access denied for user 'hellow'@'localhost' (using password: YES)

spring.datasource.monitor.url=jdbc:mysql://localhost:3306/xgsdk_monitor_db?useUnicode=true&characterEncoding=UTF-8

spring.datasource.monitor.driver-class-name=com.mysql.jdbc.Driver

spring.datasource.monitor.username=hellow

spring.datasource.monitor.password=rrt147

将localhost换成ip 10.20.72.143

 

为啥会出现上面的情况了。

stackoverflow 搜索到

http://stackoverflow.com/questions/10299148/mysql-error-1045-28000-access-denied-for-user-billlocalhost-using-passw

以及 MySQL 5.7 Reference Manual

http://dev.mysql.com/doc/refman/5.7/en/connection-access.html

总结如下:

Mysql 登录即为登录校验的过程。

读取msql.user表到内存,排序  host, user .

如果有多个匹配的则以排序的第一个为准。

注:匿名的用户,例如  ‘’@’localhost’  ‘’@127.0.0.1 都可以匹配’hello’@localhost’ 因为’’可以匹配任何用户。

User           host

hellow %

root 127.0.0.1

root ::1

localhost

root localhost

hellow localhost

 

从我的user表中的user,host两列可以得知,如果登录为’hellow’@’localhost’,那么就会

匹配到’’@’localhost’这个匿名的用户。

其实这里有点不对。User表排序之后是这样的:

localhost hellow

localhost root

localhost

::1 root

127.0.0.1 root

% hellow

如上所示,应该会匹配到第一行的,那这样就不会出现问题了。

为啥还会出现Access denied的问题呢?

通过查询  select * from mysql.user where User='hellow';

发现 两组host,user 密码不一致。

Host                   user

localhost hellow

 % hellow

统一密码后就可以了。现在用户hellowlocalhsot, ip都可以登录了。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值