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