情景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表中所列出的權限來執行命令。 否則的話,用戶將無法執行命令,實際上更本就無法連接。