zoukankan      html  css  js  c++  java
  • MySQL存取节制, 阶段1:连接证明

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

    当你试图联接一个MySQL办事器时,办事器基于你的身份和你能否能颠末提供准确的口令验证身份来接受或谢绝连接。假如不是,办事器完全具结你的存取,否则,办事器接受连接,然落伍入阶段2并且守候乞求。

    你的身份基于2个信息:

    • 你从那个主机连接
    • 你的MySQL用户名

    身份检查使用3个user表(Host, UserPassword)范围字段实行。办事器只需在一个user表条目成亲你的主机名和用户名并且你提供了准确的口令时才接受连接。

    user表范围字段可以如下被指定:

    • 一个Host值可所以主机名或一个IP数字,或'localhost'指出当田主机。
    • 你可以在Host字段里使用通配符字符“%”“_”
    • 一个Host'%'成亲任何主机名,一个空白Host值等价于'%'。注重这些值成亲能建立一个连接到你的办事器的任何主机!
    • 通配符字符在User字段中不容许,但是你能指定空白的值,它成亲任何名字。假如user表成亲到来的连接的条目有一个空白的用户名,用户被认为是匿名用户(没有名字的用户),而非客户现实指定的名字。这意味着一个空白的用户名被用于在连接时代的进一步的存取检查(即,在阶段2时代)。
    • Password字段可所以空白的。这不料味着成亲任何口令,它意味着用户必需不指定一个口令进行连接。

    非空白Password值代表加密的口令。 MySQL不以任何人可以看的纯文本款式存储口令,相反,正在试图联接的一个用户提供的口令被加密(使用PASSWORD()函数),并且与存储了user表中的已经加密的版本比较。假如他们成亲,口令是准确的。

    上面的例子表现出各类user表中HostUser条目的值的组合如何运用于到来的连接:
    Host User 被条目成亲的连接
    'thomas.loc.gov' 'fred' fred, 从thomas.loc.gov 连接
    'thomas.loc.gov' '' 任何用户, 从thomas.loc.gov连接
    '%' 'fred' fred, 从任何主机连接
    '%' '' 任何用户, 从任何主机连接
    '%.loc.gov' 'fred' fred, 从在loc.gov域的任何主机连接
    'x.y.%' 'fred' fred, 从x.y.netx.y.com,x.y.edu等联接。(这概略无用)
    '144.155.166.177' 'fred' fred, 从有144.155.166.177 IP 地址的主机连接
    '144.155.166.%' 'fred' fred, 从144.155.166 C类子网的任何主机连接

    既然你能在Host字段使用IP通配符值(比如,'144.155.166.%'成亲在一个子网上的每台主机),有概略或人概略企图寻找这种才能,颠末定名一台主机为144.155.166.somewhere.com。为了克制这样的企图,MySQL不容许成亲以数字和一个点肇真个主机名,这样,假如你用一个定名为相似1.2.foo.com的主机,它的名字决不会成亲授权表中Host列。只需一个IP数字能成亲IP通配符值。

    一个到来的连接可以被在user表中的超过一个条目成亲。比如,一个由fredthomas.loc.gov的连接成亲多个条目如上所述。假如超过一个成亲,办事器怎样选择使用哪个条目呢?办事器在启动时读入user表后颠末排序来操持这个标题问题,然后当一个用户试图连接时,以排序的递次浏览条目,第一个成亲的条目被使用。

    user表排序任务如下,假定user表看起来像这样:

     ----------- ---------- -
    | Host      | User     | ...
     ----------- ---------- -
    | %         | root     | ...
    | %         | jeffrey  | ...
    | localhost | root     | ...
    | localhost |          | ...
     ----------- ---------- -
    

    当办事器在表中读取时,它以最特定的Host值为先的挨次递次陈列('%'Host列里意味着“任何主机”并且是最不特定的)。有相同Host值的条目以最特定的User值为先的挨次递次陈列(一个空白User值意味着“任何用户”并且是最不特定的)。最终排序的user表看起来像这样:

     ----------- ---------- -
    | Host      | User     | ...
     ----------- ---------- -
    | localhost | root     | ...
    | localhost |          | ...
    | %         | jeffrey  | ...
    | %         | root     | ...
     ----------- ---------- -
    

    当一个连接被磨练测验时,办事器浏览排序的条目并使用找到的第一个成亲。关于由jeffreylocalhost的一个连接,在Host列的'localhost'条目起首成亲。那些有空白用户名的条目成亲连接的主机名和用户名。('%'/'jeffrey'条目也将成亲,但是它不是在表中的第一成亲。)

    这是别的一个例子。假定user桌子看起来像这样:

     ---------------- ---------- -
    | Host           | User     | ...
     ---------------- ---------- -
    | %              | jeffrey  | ...
    | thomas.loc.gov |          | ...
     ---------------- ---------- -
    

    排序后的表看起来像这样:

     ---------------- ---------- -
    | Host           | User     | ...
     ---------------- ---------- -
    | thomas.loc.gov |          | ...
    | %              | jeffrey  | ...
     ---------------- ---------- -
    

    一个由jeffreythomas.loc.gov的连接被第一个条目成亲,而一个由jeffreywhitehouse.gov的连接被第二个成亲。

    遍及的曲解是认为,对一个给定的用户名,当办事器试图对连接寻找成亲时,明晰了然定名那个用户的一切条目将起首被使用。这分明不是本相。先前的例子申明晰了然这点,在那里一个由jeffreythomas.loc.gov的连接没被包孕'jeffrey'作为User字段值的条目成亲,但是由没有效户名的标题问题成亲!

    假如你有办事器连接的标题问题,打印出user表并且手工排序它看看第一个成亲在哪儿进行。





    版权声明: 原创作品,容许转载,转载时请务必以超链接体例标明文章 原始理由 、作者信息和本声明。否则将究查法律责任。

  • 相关阅读:
    js 自定义方法 实现停留几秒 sleep
    java 通过sftp服务器上传下载删除文件
    iOS开发系列--音频播放、录音、视频播放、拍照、视频录制
    iOS JavaScriptCore使用
    UIWebView和WKWebView的使用及js交互
    WKWebView的新特性与使用
    OC与JS的交互详解
    iOS开发支付集成之微信支付
    iOS开发之支付宝集成
    React-Native学习指南
  • 原文地址:https://www.cnblogs.com/zgqjymx/p/1975262.html
Copyright © 2011-2022 走看看