程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> MySQL服務器的訪問控制情景分析

MySQL服務器的訪問控制情景分析

編輯:MySQL綜合教程

之前為大家介紹了MySQL授權表概述和MySQL服務器的訪問控制,接下來為大家繼續介紹“MySQL服務器的訪問控制”。以下就是具體的情景分析。

情景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表中用戶wj的host字段的值為%。
db表中用戶wj對應的host字段的值為空。
這時會發生什麼情況呢?

1. 用戶wj嘗試通過一個給定主機進行連接。

2. 假設密碼是正確的,那麼就會連接成功,因為user表指出只要是通過用戶名wj和有關密碼進行連接的話,任何(字符%所代表的含義)主機都是允許的。

3. MySQL服務器將查找db表,不過,這裡沒有指定主機。

4. MySQL服務器現在將查看host表。如果該用戶要連接的數據庫以及用戶建立連接時所在主機的名稱都位於host表中,那麼該用戶就能夠按照host表中所列出的權限來執行命令。 否則的話,用戶將無法執行命令,實際上更本就無法連接。

 相信上面的知識已經可以讓大家對數據庫授權系統有一個大概的了解,這也為以後更深入的學習數據庫系統打下了堅實的基礎,希望這篇文章對大家能有所幫助。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved