iis服务器助手广告
返回顶部
首页 > 资讯 > 数据库 >如何深入学习MySQL授权表
  • 207
分享到

如何深入学习MySQL授权表

2024-04-02 19:04:59 207人浏览 泡泡鱼
摘要

如何深入学习Mysql授权表,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。我们将向读者详细介绍mysql的授权表,并通过一些实例来讲解My

如何深入学习Mysql授权表,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

我们将向读者详细介绍mysql的授权表,并通过一些实例来讲解Mysql是如何提高这些授权表来实现用户访问控制的。我们首先介绍MySQL访问控制过程,然后说明tables_priv和columns_priv授权表,我们会给出与MySQL的tables_priv表有关的解释和范例。最后,我们介绍columns_priv授权表及其范例。

 一、MySQL授权表概述

  MySQL服务器的特点之一是,它在控制每个用户行为方面提供了极大的灵活性。例如,我们既可以限制用户访问整个数据库,也可以限制用户访问数据库中特定的表,或者禁止访问特定表中的特定列。由此看出MySQL服务器在用户授权方面的灵活性。本文将向大家详细介绍MySQL服务器是如何处理用户权限的授与/撤回的,尤其是MySQL的授权表tables_priv和columns_priv。

  MySQL的授权系统通常是通过MySQL数据库中的五个表来实现的,这些表有user、db、host、tables_priv和columns_priv。这些表的用途各有不同,但是有一点是一致的,那就是都能够检验用户要做的事情是否为被允许的。每个表的字段都可分解为两类,一类为作用域字段,一类为权限字段。作用域字段用来标识主机、用户或者数据库;而权限字段则用来确定对于给定主机、用户或者数据库来说,哪些动作是允许的。下面,我们对这些表的作用做简单介绍:

  • user表——该表决定是否允许用户连接到服务器。如果允许连接,权限字段则为该用户的全局权限。

  • db表——用于决定哪些用户可以从哪些主机访问哪些数据库。包含在db表中的权限适用于这个表标识的数据库。

  • host表——当您想在db表的范围之内扩展一个条目时,就会用到这个表。举例来说,如果某个db允许通过多个主机访问的话,那么超级用户就可以让db表内将host列为空,然后用必要的主机名填充host表。

  • tables_priv表——该表与db表相似,不同之处是它用于表而不是数据库。这个表还包含一个其他字段类型,包括timestamp和grantor两个字段,用于存储时间戳和授权方。在本文后面我们会对这个表做进一步的讲解。

  • columns_priv——该表作用几乎与db和tables_priv表一样,不同之处是它提供的是针对某些表的特定列的权限。这个表也多出了一个字段类型,即其他字段,包括了一个timestamp列,用于存放时间戳。 在本文后面部分,我们还会对columns_priv表做进一步的说明。

  下面,我们通过如下几个方面对MySQL用户授权过程加以介绍:首先介绍MySQL访问控制过程,解答MySQL授权表是如何工作的;然后,我们介绍tables_priv和columns_priv授权表,我们会给出与MySQL的tables_priv表有关的解释和范例。最后,我们介绍与columns_priv授权表有关的解释和若干范例。

  二、MySQL服务器的访问控制

  现在让我们来看看MySQL服务器是如何通过用户特权来控制用户访问的。虽然这乍听起来好像挺吓人的,但是通过一个例子的演示,您就会发现其实事情没有我们想象的那么难以理解。

  首先,对用户的访问进行控制的时候,系统需要查看作为过滤器的一些授权表,这些表的使用过程是从一般到特殊,这些表包括:

  • User表

  • Db表

  • Host表

  • Tables_priv 表

  • Columns_priv 表

  此外,一旦连接到了服务器,一个用户可以使用两种类型的请求:

  • 管理请求(shutdown,reload,等)

  • 数据库相关的请求(insert,delete,等)

  当用户提交管理请求时,服务器只需查看user表,这是因为user表是唯一包含与管理工作有关的权限的一个表。然而,当用户提交数据库请求时,要查看的表就要更多了。

  您可能已经注意到了,这些授权表的内容好像有些重复,例如user表中有select权限,同时host和user表中也有同样的权限。但是,这样做自有其道理。我们可以考虑一下user表中全局性的与数据库相关的权限,也就是说,在这个表中授予用户的权限对服务器上的所有数据库都有效。这些权限可以被认为是超级用户权限。相反,包含在host和db表之内的与数据库相关的权限则是特定于主机或者数据库的。因此,让这个表内所有的权限保持为“N”不失为一个明智的选择。

  让我们假定我们的user和db表如下所示:

如何深入学习MySQL授权表

如何深入学习MySQL授权表

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

  • Host——适用于那些主机?

  • Db——适用于从上面的主机所连接的哪些数据库?

  • User——适用于来自上述主机的哪些用户?

  • Table_name——适用于上述数据库中的哪些表?

  • Table_priv——为这个表赋予哪些权限?

  • Column_priv——为这个表中的个字段赋予哪些权限?

  • Timestamp——这个权限是何时赋予的?

  • Grantor——谁授与该用户的这个权限?

  •  要想真正弄懂tables_priv表,最好的办法就是通过实例进行学习,下面我们就给出一些例子。

      例1:

    %>GRANTSELECTON italy TO wj@314interactive.com;

      这条命令的作用是什么?以上命令允许来自主机314interactive.com的用户wj在表italy上至下一个SELECT语句。请记住,只有当给定数据库/主机和用户名对应的db或者host表中的SELECT字段的值为N时,才需要访问这个表。如果给定数据库/主机和用户名对应的db或者host表中的SELECT字段中有一个值为Y的话,那么就无需控制该tables_priv表。

      例2:

    %>GRANTSELECT, INSERTON oats.italy TO wj@314interactive.com;

      这条命令的作用是什么?以上命令允许来自主机314interactive.com的用户wj对数据库oats中的数据表italy执行SELECT和INSERT语句。

      例3:

    %>REVOKESELECTon oats.italy from wj@314interactive.com

      这条命令的作用是什么?以上命令撤消来自主机314interactive.com的用户wj对数据库oats中的表italy的执行SELECT的权限。

      重要的是要认识到,包含在tables_priv中的信息仅当host/db表不允许用户执行要求的功能所需的权限时才生效。如果给定的权限在host/db表中为Y,那么就无需考察tables_priv表。

      例4:

    %>GRANTSELECT(id,name,address,phone),update(address,phone) ON
    company.customers TO gilmore@314interactive.com;

      这条命令的作用是什么?以上命令将授予对company数据库中customers表内id、name、address和phone字段执行SELECT的权限,以及对address和phone字段执行UPDATE的权限。

      这将带来哪些影响?这条命令会修改tables_priv表和columns_priv表,这是因为它引用这两个表和表内特定的字段。

      例5:

    %>REVOKEUPDATE(address,phone) ON company.customers FROM gilmore@314interactive.com;

      这条命令的作用是什么?这个命令将撤消对company数据库中customers表内的address和phone字段执行UPDATE操作的权限。

      这将带来哪些影响?因为该命令直接涉及给定表中的某些字段,所以columns_priv表以及tables_priv表也会更新。

      前面说过,只有在必须的情况下才会使用授权表,举例来说,如果高优先级的表提供了适当的权限的话,那么就无需查阅优先级较低的授权表了。如果高优先级的表中对应命令的值为N,那么就需要进一步查看低优先级的授权表。

无论是那种级别的权限,只要有一个级别允许了,访问就能成功,这样是合理的,比如说我只想让一个用户访问一个数据库中的一个表,那么在全局和数据库级访问权限肯定是N,只有在表级是Y。如果一个用户在全局是Y,那么不管他在数据库级和表级是不是Y,他都会访问成功。因为只要在全局验证了Y,MYSQL就不再数据库级和表级进行验证。

关于如何深入学习MySQL授权表问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注编程网数据库频道了解更多相关知识。

您可能感兴趣的文档:

--结束END--

本文标题: 如何深入学习MySQL授权表

本文链接: https://www.lsjlt.com/news/66951.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 如何深入学习MySQL授权表
    如何深入学习MySQL授权表,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。我们将向读者详细介绍MySQL的授权表,并通过一些实例来讲解My...
    99+
    2024-04-02
  • 如何利用MySQL学习MongoDB中的授权和权限
    如何利用MySQL学习MongoDB中的授权和权限,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。  数据库的安全性是每一个DBA重点关注的部分...
    99+
    2024-04-02
  • 深入学习MySQL表数据操作
    目录前言正式上菜插入数据全部字段插入单条数据指定字段插入多条数据ON DUPLICATE KEY UPDATE修改数据删除数据查询数据简单查询聚合函数条件查询等值查询批量查询...
    99+
    2022-11-13
    MySQL表数据操作 MySQL表操作
  • 深入学习 Mysql 引擎 InnoDB、MyISAM
    tip:作为程序员一定学习编程之道,一定要对代码的编写有追求,不能实现就完事了。我们应该让自己写的代码更加优雅,即使这会费时费力。 💕💕 推荐:体系化学习Java(Ja...
    99+
    2023-08-31
    mysql java 面试 innodb myisam
  • oracle如何授权表权限给用户
    要授予用户对表的权限,可以使用Oracle的GRANT语句。下面是一些常见的授权表权限的示例: 授予用户SELECT权限: GR...
    99+
    2024-04-09
    oracle
  • 【MySQL系列】深入学习数据类型
    「前言」文章内容大致是数据库的数据类型。 「归属专栏」MySQL 「主页链接」个人主页 「笔者」枫叶先生(fy) 目录 一、数据类型分类二、数值类型2.1 tinyint类型2.2 bit类型2.3 小数类型2.3.1...
    99+
    2023-08-16
    mysql 学习 android
  • 如何深入学习Html DOM树的操作
    这篇文章将为大家详细讲解有关如何深入学习Html DOM树的操作,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。你对HTML DOM树的概念是否了解, 这里和...
    99+
    2024-04-02
  • MySQL如何设置用户权限和授权
    在MySQL中,可以使用GRANT语句来设置用户权限和授权。以下是一些常见的示例: 授权用户访问数据库: GRANT ALL P...
    99+
    2024-04-09
    MySQL
  • MySQL多版本并发控制MVCC深入学习
    MVCC MVCC(Multi-Version Concurrency Control),即多版本并发控制。是 innodb 实现事务并发与回滚的重要功能。锁机制可以控制并发操作,但...
    99+
    2024-04-02
  • Java8深入学习系列(一)lambda表达式介绍
    前言最近在学习java8,所以接下来会给大家介绍一系列的Java8学习内容,那么让我们先从lambda表达式开始。众所周知从java8出现以来lambda是最重要的特性之一,它可以让我们用简洁流畅的代码完成一个功能。 很长一段时间java被...
    99+
    2023-05-31
    java8 lambda表达式 ava
  • MySQl如何创建用户和授权
    小编给大家分享一下MySQl如何创建用户和授权,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!权限的管理:如何创建用户和密码给当前...
    99+
    2024-04-02
  • MySQL如何使用GRANT授权某用户浏览和修改表权限操作
    小编给大家分享一下MySQL如何使用GRANT授权某用户浏览和修改表权限操作,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧! 下面的例子是授权logger用户查...
    99+
    2024-04-02
  • 如何深入学习DIV标签概念及其用法
    这篇文章给大家介绍如何深入学习DIV标签概念及其用法,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。你对DIV标签的概念和使用你是否了解,DIV标签称为区隔标记,DIV的起始标签和结束标...
    99+
    2024-04-02
  • Python中如何深度学习CNN
    本篇文章给大家分享的是有关Python中如何深度学习CNN,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。1.CNN概述CNN的整体思想,就是对图片进行下采样,让一个函数只学一个...
    99+
    2023-06-25
  • PHP中如何进行深度学习和自动学习?
    PHP中如何进行深度学习和自动学习?随着人工智能技术的不断发展,深度学习和自动学习已经成为了重要的研究方向。然而,由于PHP主要用于Web开发,很多PHP开发者对于如何在PHP项目中实现深度学习和自动学习并不了解。本文将介绍PHP中如何进行...
    99+
    2023-05-21
    深度学习 PHP 自动学习
  • MySQL如何授权用户管理数据库
    这篇文章将为大家详细讲解有关MySQL如何授权用户管理数据库,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一、grant 普通 DBA 管理某个 MySQL 数据库的权限...
    99+
    2024-04-02
  • 如何实现MySQL中授权用户的语句?
    如何实现MySQL中授权用户的语句?MySQL是一种广泛使用的关系型数据库管理系统,通过使用授权语句,可以控制用户对数据库的访问权限。在本文中,将介绍如何通过具体的代码示例来实现MySQL中授权用户的语句。在MySQL中,可以使用GRANT...
    99+
    2023-11-08
    MySQL授权 用户语句
  • Java接口学习笔记:如何在实时中深入掌握?
    Java接口是Java编程语言中的一个重要概念,是一种定义行为的抽象类型。接口定义了一个类应该具有的方法,但并不提供实现。这使得接口成为一种非常有用的工具,可以帮助程序员编写更加可靠和灵活的代码。 在本文中,我们将深入探讨Java接口的概...
    99+
    2023-09-26
    接口 学习笔记 实时
  • MySQL中如何添加删除用户和授权
    这篇文章将为大家详细讲解有关MySQL中如何添加删除用户和授权,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。下面给大家了解一下MySQL中的用户管理,介绍一...
    99+
    2024-04-02
  • 如何学习并掌握链表
    本篇内容介绍了“如何学习并掌握链表”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!简介链表(Linked &...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作