Host列指定了允许用户登录所使用的IP,比如user=root Host=192.168.1.1。这里的意思就是说root用户只能通过192.168.1.1的客户端去访问。
而%是个通配符,如果Host=192.168.1.%,那么就表示只要是IP地址前缀为“192.168.1.”的客户端都可以连接。如果Host=%,表示所有IP都有连接权限。、
这也就是为什么在开启远程连接的时候,大部分人都直接把Host改成%的缘故,为了省事。
mysql的%虽然表示是任何主机,但是它只是针对于通过TCP/IP连接过来的主机。类似于mysql -h 172.16.0.3这种。
另外还有两种:
1、localhost
2、127.0.0.1
%不能替代上面两种,也就是说,你在本机用mysql -hlocalhost(等同于mysql 不指定-h),mysql -h127.0.0.1方式连接数据库,MySQL的权限验证模块都会采用不同的方式。