mysql数据库中user表的host字段,是用来控制用户访问数据库“权限”的。
- 可以使用“%”,表示所有的网段;
- 也可以使用具体的ip地址,表示只有该ip的客户端才可以登录到mysql服务器;
- 也可以使用“_”进行模糊匹配,表示某个网段的客户端可以登录到mysql服务器。
如果在user表中存在一个用户两条不同host值的记录,那么mysql服务器该如何匹配该用户的权限呢?
mysql采用的策略是:当服务器读取user表时,它首先以最具体的Host值排序(主机名和IP号是最具体的) 。有相同Host值的条目首先以最具体的User匹配。
举例:
如下,有两条root用户,那么只有localhost的root客户端可以登录到mysql服务器。
| root | localhost | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B |
| root | % | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B |