MySQL對于權限管理非常重要,可以控制不同用戶對于不同數據庫或者表格的訪問權限。但是,在授權的過程中,MySQL還存在一些比較特殊的情況,需要開發人員進行注意處理。其中比較重要的一個情況就是權限覆蓋。
MySQL給予權限是依靠一系列規則來實現的,實際上是通過授權表來控制的。當MySQL客戶端連接到MySQL服務器后,MySQL會檢查授權表中是否有對應的記錄。如果有,就會將對應的權限賦予此用戶。但是,可能存在這樣的情況:
GRANT ALL PRIVILEGES ON *.* TO 'dev'@'%' IDENTIFIED BY 'password'; GRANT SELECT ON test.* TO 'dev'@'%';
可以看到,對于dev用戶,直接給予了所有權限,并且對于test數據庫中的表格,又額外授權了SELECT權限。但是,如果此時執行以下代碼:
GRANT INSERT ON test.* TO 'dev'@'%';
由于先前授權ALL PRIVILEGES時,已經授權了所有權限,包括INSERT權限,所以此時的INSERT權限就覆蓋了之前授權的SELECT權限。這就是權限覆蓋的缺陷,可能會使某些用戶無法按照理想情況進行開發工作。
因此,開發人員在進行MySQL權限管理的時候,不僅要考慮當前用戶所需要的全部權限,還要考慮可能需要額外添加權限的情況。除此之外,當有多個權限對于同一個用戶和同一個數據庫進行授權時,可能會出現權限覆蓋,影響系統穩定性,也需要小心處理。
上一篇css中d代表什么
下一篇mysql權限管理處問題