MySQL服務(wù)器的訪問控制情景分析
之前為大家介紹了MySQL授權(quán)表概述和MySQL服務(wù)器的訪問控制,接下來為大家繼續(xù)介紹“MySQL服務(wù)器的訪問控制”。以下就是具體的情景分析。
情景1:失敗的連接嘗試
用戶“alessia”連接服務(wù)器時將被拒絕。因?yàn)椋鳈C(jī)、用戶和/或密碼與保持在user表中的不匹配, 所以會拒絕用戶的請求。
情景2:user表中數(shù)據(jù)庫權(quán)限為N,db表中數(shù)據(jù)庫權(quán)限為Y
1. 用戶wj嘗試連接時將會成功。
2. 用戶wj試圖在數(shù)據(jù)庫oats上執(zhí)行Select命令。
3. 服務(wù)器查看user表,對應(yīng)于Select命令的條目的值為N,即表示拒絕。
4. 服務(wù)器然后查看db表,對應(yīng)于Select命令的表項(xiàng)的值為Y,即表示允許。
5. 該請求將成功執(zhí)行,因?yàn)樵撚脩舻膁b表中的SELECT字段的值為Y。
情景3:user表中數(shù)據(jù)庫權(quán)限為Y,db表中數(shù)據(jù)庫權(quán)限為N
1. 用戶wj嘗試連接時將會成功。
2. 用戶wj試圖在數(shù)據(jù)庫oats上執(zhí)行Select命令。
3. 服務(wù)器查看user表,對應(yīng)于Select命令的表項(xiàng)的值為Y,即表示允許。 因?yàn)樵趗ser表之內(nèi)授與的權(quán)限是全局性的,所以該請求會成功執(zhí)行。
情景4:user表中數(shù)據(jù)庫權(quán)限為N,db表中數(shù)據(jù)庫權(quán)限為N
1. 用戶wj嘗試連接時將會成功。
2. 用戶wj試圖在數(shù)據(jù)庫oats上執(zhí)行Select命令。
3. 服務(wù)器查看user表,對應(yīng)于Select命令的表項(xiàng)的值為N,即表示拒絕。
4. 服務(wù)器現(xiàn)在會查看db表,對應(yīng)于Select命令的表項(xiàng)的值為N,即表示拒絕。
5. 服務(wù)器現(xiàn)在將查找tables_priv和columns_priv表。如果用戶的請求符合表中賦予的權(quán)限,則準(zhǔn)予訪問。 否則,訪問就會被拒絕。
對于tables_priv和columns_priv表,后面會進(jìn)一步加以詳述。
情景5:讓我們假定下列情況為真:
user表中用戶wj的host字段的值為%。
db表中用戶wj對應(yīng)的host字段的值為空。
這時會發(fā)生什么情況呢?
1. 用戶wj嘗試通過一個給定主機(jī)進(jìn)行連接。
2. 假設(shè)密碼是正確的,那么就會連接成功,因?yàn)閡ser表指出只要是通過用戶名wj和有關(guān)密碼進(jìn)行連接的話,任何(字符%所代表的含義)主機(jī)都是允許的。
3. MySQL服務(wù)器將查找db表,不過,這里沒有指定主機(jī)。
4. MySQL服務(wù)器現(xiàn)在將查看host表。如果該用戶要連接的數(shù)據(jù)庫以及用戶建立連接時所在主機(jī)的名稱都位于host表中,那么該用戶就能夠按照host表中所列出的權(quán)限來執(zhí)行命令。 否則的話,用戶將無法執(zhí)行命令,實(shí)際上更本就無法連接。
相信上面的知識已經(jīng)可以讓大家對數(shù)據(jù)庫授權(quán)系統(tǒng)有一個大概的了解,這也為以后更深入的學(xué)習(xí)數(shù)據(jù)庫系統(tǒng)打下了堅(jiān)實(shí)的基礎(chǔ),希望這篇文章對大家能有所幫助。
【編輯推薦】