Mysql;权限控制

 

mysql 权限控制

 

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拥有更新权限

 

在同一个级别被赋予了不同权限,取最小权限。

 

 

你可能感兴趣的:(数据库,mysql,服务器,用户,password)