+-----------------------------+--------+-----------------------------------------------+
| ‘%‘ | ‘test‘ | test用户可以从任意主机连接数据库 |
+-----------------------------+--------+----------------------------------------------+
| ‘‘ | ‘‘ | 任何用户可以从任意主机连接数据库 |
+-----------------------------+--------+-----------------------------------------------+
| ‘%.y.z‘ | ‘test‘ | test用户可以从y.z域的任意主机连接数据库 |
+-----------------------------+--------+----------------------------------------------+
| ‘x.y.% ‘ | ‘test‘ | test用户可以从x.y.net, x.y.com, x.y.edu等主机连接数据库| +-----------------------------+--------+----------------------------------------------+
| ‘192.168.1.1‘ | ‘test‘ | test用户可以从IP地址为192.168.1.1的主机连接数据库 |
+-----------------------------+--------+---------------------------------------------+
| ‘192.168.1.% ‘ | ‘test‘ | test用户可以从C类子网192.168.1中的任意主机连接数据库 |
+-----------------------------+--------+---------------------------------------------+ | ‘192.168.1.0/255.255.255.0‘ | ‘test‘ | 同上 |
+-----------------------------+--------+--------------------------------------------+
SQL的字符串通配符%表示匹配任意字符,可以是0个字符,通配符_表示匹配一个字符。
权限列指出在范围列中指定的用户拥有何种权限。该表使用GRANT语句的权限名称。对于绝大多数在user、db和host表中的权限列的名称与GRANT语句中有明显的联系。如Select_priv对应于SELECT权限。
3)授权表使用举例
grant用于给增加用户和创建权限,revoke用于删除用户权限。 下面是一些用grant增加用户和创建权限的例子:
mysql> grant all privileges on *.* to test@localhost identified by ‘test‘ with grant option;
这句增加一个本地具有所有权限的test用户(超级用户),密码是test。ON子句中的*.*意味着"所有数据库、所有表"。with grant option表示它具有grant权限。
mysql> grant select,insert,update,delete,create,drop privileges on test.* to test1@‘192.168.1.0/255.255.255.0‘ identified by ‘test‘;
这句是增加了一个test1用户,口令是test,但是它只能从C类子网192.168.1连接,对test库有select,insert,update,delete,create,drop操作权限。
用grant语句创建权限是不需要再手工刷新授权表的,因为它已经自动刷新了。
给用户创建权限还