一、查看MySQL用户权限
mysql> show grants for 用户名@'用户地址';
1.使用mysql数据库,可以看到db表、table_priv表和user表。db表中可以看到哪些用户拥有对哪些数据库的权限;table_priv可以查看用户拥有哪些表的操作权限;user表可以看到能登录到MySQL的用户信息。
2.mysql权限表的验证过程:
2.1 先从user表中的Host,User,Password这3个字段中判断连接的ip、用户名、密码是否存在,存在则通过验证。
2.2 通过身份认证后,进行权限分配,按照user,db,table_priv,columns_priv的顺序进行验证。即先检查全局权限表user,如果user中对应的权限为Y,则此用户对所有数据库的权限都为Y,将不再检查db,table_priv,columns_priv;如果为N,则到db表中检查此用户对应的具体数据库,并得到db中为Y的权限;如果db中为N,则检查tables_priv中此数据库对应的具体表,取得表中的权限Y,以此类推。
二、给用户授权
mysql> grant 权限1,权限2,...权限n on 数据库名称.表名称 to 用户名@'用户地址' identified by ‘连接口令’;
1.权限1,2 代表 select 、insert、update、delete、create、drop、index、alter、grant、references、reload、shutdo、wn、process、file等14个权限。
2.当权限1被all privilleges 或者 all 代替时,表示赋予用户全部权限。
3.当数据库名称.表名称 被 *.* 代替时,表示赋予用户操作服务器上所有数据库所有表的权限。
4.用户地址可以是localhost,也可以是IP地址、机器名和域名,也可以用‘%’表示从任何地址连接。
5.‘连接口令’不能为空,否则创建失败。
三、收回用户的库级和表级权限
mysql> revoke 权限1,权限2,...权限n on 数据库名称.表名称 from 用户名@'用户地址';