亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

MySQL授權表的概述

發布時間:2021-09-16 16:47:00 來源:億速云 閱讀:128 作者:chen 欄目:數據庫

這篇文章主要介紹“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:讓我們假定下列情況為真:

  • user表——該表決定是否允許用戶連接到服務器。如果允許連接,權限字段則為該用戶的全局權限。

  • db表——用于決定哪些用戶可以從哪些主機訪問哪些數據庫。包含在db表中的權限適用于這個表標識的數據庫。

  • host表——當您想在db表的范圍之內擴展一個條目時,就會用到這個表。舉例來說,如果某個db允許通過多個主機訪問的話,那么超級用戶就可以讓db表內將host列為空,然后用必要的主機名填充host表。

  • tables_priv表——該表與db表相似,不同之處是它用于表而不是數據庫。這個表還包含一個其他字段類型,包括timestamp和grantor兩個字段,用于存儲時間戳和授權方。在本文后面我們會對這個表做進一步的講解。

  • columns_priv ——該表作用幾乎與db和tables_priv表一樣,不同之處是它提供的是針對某些表的特定列的權限。這個表也多出了一個字段類型,即其他字段,包括 了一個timestamp列,用于存放時間戳。 在本文后面部分,我們還會對columns_priv表做進一步的說明。

  • User表

  • Db表

  • Host表

  • Tables_priv 表

  • Columns_priv 表

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

  • 數據庫相關的請求(insert,delete,等)

  • user表中用戶wj的host字段的值為%。

  • db表中用戶wj對應的host字段的值為空。

  這時會發生什么情況呢?
  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表的示意圖:

  下面簡要介紹各字段的含義:

  • 通配符可以用于這兩個表的host字段,但是不允許在Db、Table_name和Column_name字段使用通配符。

  • 權限字段被聲明為SET字段。

  • tables_priv和columns_priv表只應當通過GRANT/REVOKE命令進行修改。通過INSERT命令向這兩個表插入數據會導致服務器不穩定!

  • tables_priv表中的table_priv字段可以允許下列命令:Select、Insert、Update、Delete、Create、Drop、Grant、References、Index和Alter。

  • tables_priv表中的column_priv字段允許下列命令:Select、Insert、Update和References。

  • columns_priv表中的type字段允許下列命令:Select、Insert、Update和References。

到此,關于“MySQL授權表的概述”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

五华县| 孝昌县| 镇安县| 巴楚县| 建湖县| 庐江县| 锡林浩特市| 太湖县| 建德市| 千阳县| 德安县| 滁州市| 南开区| 沾化县| 鱼台县| 建德市| 玉林市| 伊金霍洛旗| 天等县| 长泰县| 宁南县| 迁西县| 浙江省| 宁陕县| 汉沽区| 卓资县| 河东区| 柏乡县| 商南县| 龙川县| 普兰店市| 苏尼特左旗| 蒙阴县| 宿州市| 濮阳县| 建德市| 金塔县| 河池市| 二连浩特市| 东乡族自治县| 佛教|