mysql认证 oracle认证_MySQL认证用户的顺序

MySQL认证用户的顺序

mysql的用户认证和其他的数据库一个很大的不同就是msyql数据库用户可以分为两部分

一部分是用户名,一部分是主机名.如,'root'@'192.168.10.150',对于后面的ip地址如果有

多个值可选的话,这时候谁最先匹配就成了最重要的.

当mysql客户端在连接mysql服务器的时候,mysql最先检查主机部分,即使后续有更加宽松

的限制,同时也满足的话,mysql也不会再去做匹配.由于mysql的这种匹配规则顺序,经常使得用户

明明查看到有相应的用户和主机也无法连接上.

比如当前的用户情况.

mysql> select user,host from mysql.user;

+-------+---------------+

| user  | host          |

+-------+---------------+

| frank | %             |

| rep   | %             |

| root  | %             |

| ggs   | 127.0.0.1     |

| root  | 192.168.10.150 |

| root  | ::1           |

| root  | localhost     |

+-------+---------------+

7 rows in set (0.00 sec)

'root'@'%'的密码是root,'root'@'192.168.10.150'的密码是abc;

我们在192.168.10.150的机器上登录,用abc密码可以登录成功

[root@c12 ~]# mysql -u root -pabc -s -h  192.168.10.145

mysql>

再试一下用root密码登录

[root@c12 ~]# mysql -u root -proot -s -h  192.168.10.145

ERROR 1045 (28000): Access denied for user 'root'@'c12.fb.com' (using password: YES)

登录报错.通过测试我们发现通过mysql.user的host进行desc排序,这个顺序就是mysql匹配主机字符串的顺序

mysql> select user,host from mysql.user order by host desc;

+-------+---------------+

| user  | host          |

+-------+---------------+

| root  | localhost     |

| root  | ::1           |

| root  | 192.168.10.150 |

| ggs   | 127.0.0.1     |

| root  | %             |

| rep   | %             |

| frank | %             |

+-------+---------------+

7 rows in set (0.00 sec)

可以看出host从上往下依次匹配的顺序,先是主机,最后是%号.

同时通过上以测试我们发现在第一个主机匹配成功后,后续即使密码相同,mysql也不去匹配了.

[root@c12 ~]# mysql -u root -proot -s -h  192.168.10.145

这条连接请求,也符合倒数第三个主机和用户名对'root'@'%',但是当主机第一条192.168.10.150已经匹配成功了,但密码不一致,

导致失败,mysql拒绝用户的连接请求.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值