mysql权限分以下几个级别
服务器---》数据库级别----》表级别,函数级别,视图级别----》列级别
一个用户可以对每一个级别独立拥有权限。
对mysql的权限控制可以用可以使用两种方法:
1.使用navicat for mysql
2.直接修改mysql库中的系统表
不管使用哪种方式修改权限 ,都必须重新执行一下
flush PRIVILEGES ,刷新一下
对mysql 权限控制主要在以下几张表中
procs_priv: 用户对函数过程的权限控制
tables_priv:用户对表权限的控制
mysql.db:用户对db权限的控制
mysql.`user`:用户对服务器权限的控制
mysql.`host`:指定一台主机/IP 对DB的权限的控制
columns_priv:用户对列权限的控制 ,该权限生效的前提是是 ,必须对表具有查询权限
flush privileges -- 重载系统权限表,使权限生效
值得注意的是
mysql.`user` 表中User,password 最好不为空,
mysql.`db` 该表中的user字段不要为空
否则会对后期的权限控制造成影响,对服务器也不安全
一个用户可以只对服务器拥有权限,也可以只对数据库拥有权限,又可以只对表拥有权限。但是对列单独拥有权限的时候,必须对该列所在的表有查询权限。
例如:User01 对Table01没有任何权限 ,但是对table01下的列有权限,这个权限是不会起到任何作用的。要对user01授予table01查询权限, User01对列的权限才能起到作用
在mysql数据库中,权限的设置只有授予,或是收回,没有拒绝这个概念,没有授予并不代表拒绝,所以在不同级别下对同一对象的不同权限,是取集合的 。
例如:User02对DB01只拥有查询权限,又对User02赋予DB01的Table01赋予更新权限,此时User02对DB01拥有查询权限并且对Table01拥有更新权限
在同一个级别被赋予了不同权限,取最小权限。
--转自