o2geao 发表于 2018-10-2 11:42:43

mysql权限机制2-yong

  权限控制机制       
  四张表:user   db    tables_privcolumns_priv      privilege特权
  mysql flush privileges;
  方式2:

mysqladmin flush-privileges -u root -p1
  五表联动(5.7取消了host表)
  user表
  登录认证:用户能否进mysql查看user
  权限认证:如果能进,看user表的权限有没有,没有就看下一个db表,db表没有看tables_priv,tables_priv没有就去看columns_priv
  

当db表的host字段为空的时候才会用到host表  
db或者host 任何一个select是N,都是没权限
  

  使用命令授权:grant
  也可创建新账户(不过后面的版本会移除这个功能,建议使用create user)
  语法格式:
  grant 权限列表on 库名.表名 to '用户名'@'客户端主机';
  ==权限列表      all         所有权限(不包括授权权限)
  select,update
  select(col1), insert(col1,col2)         Column level
  

==数据库.表名    *.*         所有库下的所有表                  Global level  web.*       web库下的所有表               Database level
  web.stu_info    web库下的stu_info表   Table level
  

  
==客户端主机            %                        所有主机
  192.168.2.%         192.168.2.0网段的所有主机
  192.168.2.168         指定主机
  localhost                指定主机
  

  with_option参数
  GRANT OPTION:                                       授权选项
  MAX_QUERIES_PER_HOUR:                   定义每小时允许执行的查询数
  MAX_UPDATES_PER_HOUR:                   定义每小时允许执行的更新数
  MAX_CONNECTIONS_PER_HOUR:         定义每小时可以建立的连接数
  MAX_USER_CONNECTIONS:                  定义单个用户同时可以建立的连接数

  mysql> grant select(id),insert(id) on wing.t1 to 'xiaowu'@'172.16.70.%'>
  mysql> grant select,insert on wing.t1 to 'xiaowu'@'172.16.70.%'>
  mysql> grant all on wing.t1 to 'xiaowu'@'172.16.70.%'>
  mysql> grant all on. to 'xiaowu'@'172.16.70.%'>  mysql> grant all on. to 'xiaowu'@'172.16.70.%' ;
  mysql> grant all on. to 'xiaowu'@'%';
  查看权限
  看自己的权限:
  SHOW GRANTS\G
  

看别人的权限:  
SHOW GRANTS FOR admin1@'%'\G
  

  撤销权限:revoke
  语法:
  REVOKE 权限列表 ON 数据库名 FROM 用户名@‘客户端主机’
  

mysql> revoke all on *.* from 'xiaowu'@'%';  
mysql> revoke delete on *.*from admin1@’%’;                                 //回收部分权限
  
REVOKE ALL PRIVILEGESON *.*FROM admin2@’%’;                           //回收所有权限
  
REVOKE ALL PRIVILEGES,GRANT OPTIONON *.* FROM 'admin2'@'%';


页: [1]
查看完整版本: mysql权限机制2-yong