c 链接mysql 登录验证_mysql客户端连接服务器时怎么验证匹配授权表

从客户端来连接服务器时,发现服务器端mysql库中的授权表有多条记录匹配我的这个连接,那么服务器会选择哪条记录来验证本次连接呢?

解决方法:

首先,mysql启动的时候会读入mysql,然后进行排序;

然后,按排序后的条目来匹配验证客户端的连接,mysql服务器会选择与客户端连接匹配的第一行记录来验证。

那么mysql会按照什么规则来排序呢?

首先,以user表中的host值来排序,最具体的主机名或ip地址排在最前面;

其次,如果host值相同,会再按照user值来排序,也是跟host值排序一样,最具体的user值排在最前面。

来看下面的例子:

例如:user表中的host和user值如下: 代码示例:

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

| Host        | User     |

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

| %           | devl     |

| 192.168.1.1 | dev1     |

| 192.168.1.1 |          |

| 192.168.%   | dev1     |

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

那么按照上面所说的规则,user表被载入内存后排序,得到下面的样子: 代码示例:

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

| Host        | User     |

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

| 192.168.1.1 | devl     |

| 192.168.1.1 |          |

| 192.168.%   | dev1     |

| %           | dev1     |

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

如果能够连接服务器,但权限不是期望的,可能被鉴定为其它账户。

要想找出服务器用来鉴定你的账户,可以使用CURRENT_USER()函数。它返回user_name@host_name格式的值

例如: 代码示例:

select CURRENT_USER();

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值