zoukankan      html  css  js  c++  java
  • MySQL存取节制,阶段2:恳求证实

     

    作者:天极软件 来源:天极软件

    一旦你设立设置配备摆设了一个毗连,效劳器进入阶段2。对在此毗连上出去的每个恳求,效劳器反省你可否有充沛的权限来实行它,它基于你进展实行的操作典型圭臬尺度。这恰是在授权表中的权限字段发扬感染的处所。这些权限可以来子userdbhosttables_privcolumns_priv表的任何一个。授权表用GRANTREVOKE饬令操作。见7.26 GRANTREVOKE 句法。(你可以发觉参考6.6 权限零碎怎样任务很有帮忙,它列出了在每个权限表中呈现的字段。)

    user表在一个全局根本上付与付与你的权限,该权限岂论以后的数据库是什么均实用。例如,要是user表付与你delete权限, 你可以删除在效劳器主机上从任何数据库删除行!换句话说,user表权限是超等用户权限。只把user表的权限付与超等用户如效劳器或数据库主管是明智的。对其他用户,你应该把在user表中的权限设成'N'并且仅在一个特定数据库的根本上授权, 运用dbhost表。

    dbhost表付与数据库特定的权限。在范畴字段的值可以如下被指定:

    • 通配符字符“%”“_”可被用于两个表的HostDb字段。
    • db表的'%'Host值意味着“任何主机”,在db表中一个空缺Host值意味着“对进一步的信息咨询host表”。
    • host表的一个'%'或空缺Host值意味着“任何主机”。
    • 在两个表中的一个'%'或空缺Db值意味着“任何数据库”。
    • 在两个表中的一个空缺User值成家匿名用户。

    dbhost表在效劳器启动时被读取和排序(同时它读user表)。db表在HostDbUser范畴字段上排序,并且host表在HostDb范畴字段上排序。对于user表,排序首先安置最特定的值然后最初最不特定的值,并且当效劳器根究成家入条目时,它运用它找到的第一个成家。

    tables_privcolumns_priv表付与表和列特定的权限。在范畴字段的值可以如下被指定:

    • 通配符“%”“_”可用在运用在两个表的Host字段。
    • 在两个表中的一个'%'或空缺Host意味着“任何主机”。
    • 在两个表中的DbTable_nameColumn_name字段不克不及包括通配符或空缺。

    tables_privcolumns_priv表在HostDbUser字段上被排序。这相似于db表的排序,只管由于只需Host字段可以包括通配符,但排序更简朴。

    恳求证实历程鄙人面描绘。(要是你熟悉存取反省的源代码,你会注重到这里的描绘与在代码运用的算法略有差别。描绘等价于代码实际做的器械;它只是差别于使解释更简朴。)

    对管理恳求(shutdownreload等等),效劳器仅反省user表条目,由于那是独一指定管理权限的表。要是条目答应恳求的操作,存取被授权了,否则回绝。例如,要是你想要实行mysqladmin shutdown,然则你的user表条目没无为你付与shutdown权限,存取乃至不消反省dbhost表就被回绝。(由于他们不包括Shutdown_priv行列,没有多么做的需求。)

    对数据库有关的恳求(insertupdate等等),效劳器首先经由历程查找user表条目来反省用户的全局(超等用户)权限。要是条目答应恳求的操作,存取被授权。要是在user表中全局权限缺乏,效劳器经由历程反省dbhost表确定特定的用户数据库权限:

    1. 效劳器在db表的HostDbUser字段上查找一个成家。 HostUser对应毗连用户的主机名和MySQL用户名。Db字段对哄骗户想要存取的数据库。要是没有HostUser的条目,存取被回绝。
    2. 要是db表中的条目有一个成家并且它的Host字段不是空缺的,该条目定义用户的数据库特定的权限。
    3. 要是成家的db表的条目的Host字段是空缺的,它走漏闪现host表陈列主机应该被答应存取数据库的主机。在这种景遇下,在host表中作进一步查找以发明HostDb字段上的成家。要是没有host表条目成家,存取被回绝。假设有成家,用户数据库特定的权限以在dbhost表的条目的权限,即在两个条目都是'Y'的权限的交集(而不是并集!)谋略。(多么你可以付与在db表条目中的宏壮权限,然后用host表条目按一个主机一个主机为根当地有选择地限制它们。)

    在确定了由dbhost表条目付与的数据库特定的权限后,效劳器把他们加到由user表付与的全局权限中。要是结果答应恳求的操作,存取被授权。否则,效劳器反省在tables_privcolumns_priv表中的用户的表和列权限并把它们加到用户权限中。基于此结果答应或回绝存取。

    用布尔术语走漏闪现,背面关于一个用户权限如何谋略的描绘可以多么总结:

    global privileges
    OR (database privileges AND host privileges)
    OR table privileges
    OR column privileges
    

    它可以不清楚,为什么呢,要是全局user条目的权限最初发明对恳求的操作缺乏,效劳器以后把这些权限加到数据库、表和列的特定权限。启事是一个恳求可以要求超越一种典型圭臬尺度的权限。例如,要是你实行一个INSERT ... SELECT语句,你就都要insertselect权限。你的权限必需如斯以便user表条目付与一个权限而db表条目付与另一个。在这种景遇下,你有需求的权限实行恳求,然则效劳器不克不及自己把两个表区别开来;两个条目付与的权限必需组合起来。

    host表能被用来维护一个“安全”效劳器列表。在TcX,host表包括一个在当地的网络上悉数的机械的表,这些被付与悉数的权限。

    你也可以运用host表指定不屈安的主机。假定你有一台机械public.your.domain,它位于你不以为是安全的一个大众区域,你可以用下列的host表条目子答应除了那台机械外的网络上悉数主机的存取:

     -------------------- ---- -
    | Host               | Db | ...
     -------------------- ---- -
    | public.your.domain | %  | ... (悉数权限设为 'N')
    | %.your.domain      | %  | ... (悉数权限设为 'Y')
     -------------------- ---- -
    

    固然,你应该总是测试你在授权表中的条目(例如,运用mysqlaccess)让你确保你的存取权限实际上以你以为的方式被设置。





    版权声明: 原创作品,答应转载,转载时请务必以超链接体式格局标明文章 原始情由 、作者信息和本声明。否则将清查法律责任。

  • 相关阅读:
    深入浅出js单例模式
    前端常见面试-存储/缓存篇
    JavaScript内存管理
    delete操作符
    解决window.location.href跳转无效问题解决办法
    前端程序员经常忽视的一个JavaScript面试题
    【华为云技术分享】漫谈LiteOS-端云互通组件-MQTT开发指南(上)
    【华为云技术分享】序列特征的处理方法之二:基于卷积神经网络方法
    【华为云技术分享】原来CTR预估模型的发展有这样的规律
    【华为云技术分享】在家办公怎么弄?华为云DevCloud宝典一看就懂——项目管理篇
  • 原文地址:https://www.cnblogs.com/zgqjymx/p/1975261.html
Copyright © 2011-2022 走看看