作家
登录

带您深入了解MySQL的权限管理

作者: 来源: 2017-10-31 13:07:41 阅读 我要评论

2017年架构师最重要的48个小时 | 8折倒计时


MySQL 的权限表在数据库启动的时刻就载入内存,当用户经由过程身份认证后,就在内存中进行响应权限的存取,如许,此用户就可以在数据库中做权限范围内的各类操作了。

一、权限表的存取

在权限存取的两个过程中,体系会用到 “mysql” 数据库(安装 MySQL 时被创建,数据库名称叫“mysql”) 中 user、host 和 db 这3个最重要的权限表。

在这 3 个表中,最重要的表示 user 表,其次是 db 表,host 表在大年夜多半情况下并不应用。

user 中的列重要分为 4 个部分:用户列、权限列、安然列和资本控制列。

平日用的最多的是用户列和权限列,个中权限列又分为通俗权限和治理权限。通俗权限用于数据库的操作,比如 select_priv、super_priv 等。

当用户进行连接时,权限表的存取过程有以下两个过程:

  • 先大年夜 user 表中的 host、user 和 password 这 3 个字段中断定连接的 IP、用户名、和暗码是否存在于表中,如不雅存在,则经由过程身份验证,不然拒绝连接。
  • 如不雅经由过程身份验证、则按照以下权限表的次序获得数据库权限:user -> db -> tables_priv -> columns_priv。

关于MySQL的权限治理,你懂得吗?

在这几个权限表中,权限范围依次递减,全局权限覆盖局部权限。膳绫擎的第一阶段好懂得,下面以一个例子来具体解释一下第二阶段。

为了便利测试,须要修改变量 sql_mode

  1. // sql_mode 默认值中有 NO_AUTO_CREATE_USER (防止GRANT主动创建新用户,除非还指定了暗码) 
  2.  
  3. SET SESSION sql_mode='STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION' 

1. 创建用户 zj@localhost,并付与所稀有据库上的所有表的 select 权限

  1. MySQL [mysql]> grant select on *.* to zj@localhost; 
  2. Query OK, 0 rows affected, 2 warnings (0.00 sec) 
  3.  
  4. MySQL [mysql]> select * from user where user="zj" and host='localhost' \G; 
  5. *************************** 1. row *************************** 
  6.                   Host: localhost 
  7.                   User: zj 
  8.            Select_priv: Y 
  9.            Insert_priv: N 
  10.            Update_priv: N 
  11.            Delete_priv: N 
  12.            Create_priv: N 
  13.              Drop_priv: N 
  14.            Reload_priv: N 
  15. ...  

2. 查看 db 表

  1. MySQL [mysql]> select * from db where user='zj' \G ; 
  2.  
  3.  1/9    1 2 3 4 5 6 下一页 尾页

      推荐阅读

      移动联通电信 谁家100M宽带靠谱又划算?

    2017年架构师最重要的48个小时 | 8折倒计时 自负年夜2015年我国大年夜力开展“宽带中国”专项行动后>>>详细阅读


    本文标题:带您深入了解MySQL的权限管理

    地址:http://www.17bianji.com/lsqh/38307.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)