MySQL授权表的概述

发布时间:2021-09-16 16:47:00 作者:chen
来源:亿速云 阅读:128

这篇文章主要介绍“MySQL授权表的概述”,在日常操作中,相信很多人在MySQL授权表的概述问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”MySQL授权表的概述”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!


  一、MySQL授权表概述
  MySQL服务器的特 点之一是,它在控制每个用户行为方面提供了极大的灵活性。例如,我们既可以限制用户访问整个数据库,也可以限制用户访问数据库中特定的表,或者禁止访问特 定表中的特定列。由此看出MySQL服务器在用户授权方面的灵活性。本文将向大家详细介绍MySQL服务器是如何处理用户权限的授与/撤回的,尤其是 MySQL的授权表tables_priv和columns_priv。
  MySQL的授权系统通常是通过MySQL数据库中的五个表来 实现的,这些表有user、db、host、tables_priv和columns_priv。这些表的用途各有不同,但是有一点是一致的,那就是都能 够检验用户要做的事情是否为被允许的。每个表的字段都可分解为两类,一类为作用域字段,一类为权限字段。作用域字段用来标识主机、用户或者数据库;而权限 字段则用来确定对于给定主机、用户或者数据库来说,哪些动作是允许的。下面,我们对这些表的作用做简单介绍:
  下 面,我们通过如下几个方面对MySQL用户授权过程加以介绍:首先介绍MySQL访问控制过程,解答MySQL授权表是如何工作的;然后,我们介绍 tables_priv和columns_priv授权表,我们会给出与MySQL的tables_priv表有关的解释和范例。最后,我们介绍与 columns_priv授权表有关的解释和若干范例。
  二、MySQL服务器的访问控制
  现在让我们来看看MySQL服务器是如何通过用户特权来控制用户访问的。虽然这乍听起来好像挺吓人的,但是通过一个例子的演示,您就会发现其实事情没有我们想象的那么难以理解。
  首先,对用户的访问进行控制的时候,系统需要查看作为过滤器的一些授权表,这些表的使用过程是从一般到特殊,这些表包括:
  此外,一旦连接到了服务器,一个用户可以使用两种类型的请求:
  当用户提交管理请求时,服务器只需查看user表,这是因为user表是唯一包含与管理工作有关的权限的一个表。然而,当用户提交数据库请求时,要查看的表就要更多了。
   您可能已经注意到了,这些授权表的内容好像有些重复,例如user表中有select权限,同时host和user表中也有同样的权限。但是,这样做自 有其道理。我们可以考虑一下user表中全局性的与数据库相关的权限,也就是说,在这个表中授予用户的权限对服务器上的所有数据库都有效。这些权限可以被 认为是超级用户权限。相反,包含在host和db表之内的与数据库相关的权限则是特定于主机或者数据库的。因此,让这个表内所有的权限保持为“N”不失为 一个明智的选择。
  让我们假定我们的user和db表如下所示:

  情景1:失败的连接尝试
  用户“alessia”连接服务器时将被拒绝。因为,主机、用户和/或密码与保持在user表中的不匹配, 所以会拒绝用户的请求。
  情景2:user表中数据库权限为N,db表中数据库权限为Y
  1. 用户wj尝试连接时将会成功。
  2. 用户wj试图在数据库oats上执行Select命令。
  3. 服务器查看user表,对应于Select命令的条目的值为N,即表示拒绝。
  4. 服务器然后查看db表,对应于Select命令的表项的值为Y,即表示允许。
  5. 该请求将成功执行,因为该用户的db表中的SELECT字段的值为Y。
  情景3:user表中数据库权限为Y,db表中数据库权限为N
  1. 用户wj尝试连接时将会成功。
  2. 用户wj试图在数据库oats上执行Select命令。
  3. 服务器查看user表,对应于Select命令的表项的值为Y,即表示允许。 因为在user表之内授与的权限是全局性的,所以该请求会成功执行。
  情景4:user表中数据库权限为N,db表中数据库权限为N
  1. 用户wj尝试连接时将会成功。
  2. 用户wj试图在数据库oats上执行Select命令。
  3. 服务器查看user表,对应于Select命令的表项的值为N,即表示拒绝。
  4. 服务器现在会查看db表,对应于Select命令的表项的值为N,即表示拒绝。
  5. 服务器现在将查找tables_priv和columns_priv表。如果用户的请求符合表中赋予的权限,则准予访问。 否则,访问就会被拒绝。
  对于tables_priv和columns_priv表,后面会进一步加以详述。
  情景5:让我们假定下列情况为真:

  这时会发生什么情况呢?
  1. 用户wj尝试通过一个给定主机进行连接。
  2. 假设密码是正确的,那么就会连接成功,因为user表指出只要是通过用户名wj和有关密码进行连接的话,任何(字符%所代表的含义)主机都是允许的。
  3. MySQL服务器将查找db表,不过,这里没有指定主机。
  4. MySQL服务器现在将查看host表。如果该用户要连接的数据库以及用户建立连接时所在主机的名称都位于host表中,那么该用户就能够按照host表中所列出的权限来执行命令。 否则的话,用户将无法执行命令,实际上更本就无法连接。
  通过了解上述情形,读者就应该对授权系统有一定了解了。下面,我们再来仔细聊聊tables_priv表和columns_priv表。

  三、Tables_priv表与columns_priv表
   在上面介绍的五种授权表中,tables_priv和columns_priv是后来加入进来的,它们的主要目的是提供细粒度的用户控制。这两个表与授 权表db非常类似,但是其控制的范围更加细致,即特定数据库中的特定的表。前面说过,超级用户可以通过授权表db来限制用户在一个数据库中的行为,有了这 两个授权表,超级用户可以进一步控制用户针对每个表和每个字段的动作。所以,这给超级用户提供了更加灵活的控制选项。
  在深入学习对数据表的访问控制之前,首先让我们了解一下下列特性:
  授权表tables_priv
  下列是一个tables_priv表的示意图:

  下面简要介绍各字段的含义:

到此,关于“MySQL授权表的概述”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!

推荐阅读:
  1. openstack概述
  2. MySQL索引概述

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

mysql

上一篇:Winform如何使用OpenFileDialog弹出文件对话框

下一篇:.NET MVC的示例分析

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》