分配合理的數據庫權限對於維護系統安全相當重要。尤爲是,必定要將網絡應用程序和數據庫管理功能所需的權限分開,以確保系統安全。咱們看到有些客戶,誤設帳號權限或將全部權限分配給一個帳號(GRANT ALL in MySQL),這真的是沒有見識,緣由以下:mysql
首先,很明顯的一個緣由就是,每一個帳號或用戶僅授予其所需的權限,很少受權。這在安全設計中,是一個很關鍵的因素。這意味着,用戶僅在其所用的數據庫中,有選、改、增的權限,必要時,可賦予刪除權限。而不是將用戶權限設置爲*.*,由於這樣的話,他即可以閱讀用戶表及密碼等。sql
其次,數據庫管理員帳號能夠刪除數據庫、更改表、更改服務器配置等等。請記住若是有SQL注入***或您的應用程序有bug的話,那麼***便可以輕易地經過該帳號鏈接到數據庫,因此,要一直假設該用戶帳號可能會被竊取,這樣能夠減小系統安全危害。數據庫
再次,爲每一個應用程序或子系統分設獨立帳號,這樣不但能輕易地排除故障,還有利於分配不一樣的安全權限。這樣,您的搜索引擎、備份監控等均可以採用不一樣的帳號和不一樣的隨機密碼。您還應該分設獨立的數據庫管理員帳號,使每一個數據庫管理員用戶有單獨帳戶,這樣能夠提升可審計性、可追蹤性,便於瞭解誰作了什麼事情。若是員工離職,也可以輕易地應付。安全
第四,數據庫管理員帳號能夠逾越咱們在MySQL從機上設置的只讀權限,進而更改本地數據。(而數據修改僅容許在主機器上操做)。可是,任何有超級權限的用戶都不受只讀權限的限制,當有人使用這些帳號更改數據、致使雙重鍵值錯誤或致使從機停運等等,客戶便碰到麻煩了。服務器
最後,DBA帳號還能夠運行一些危害性很大的命令,如LOAD INFILE,只要是MySQL所鏈接的服務器上的文件,它都能閱讀獲得。舉例來講,咱們看到過***使用該命令閱讀/etc/password文件,這是當某位用戶使用本身的DBA帳號登錄運行網絡應用程序時,***便加以利用,經過SQL注入進攻來閱讀該文件。網絡
總結,請在每一個層次上留心您的數據庫安全設置,包括配置和文件權限,可是,最重要的是,合理設置數據庫用戶及其權限。分設獨立的數據庫管理員帳號,每人一個賬號。每一個應用程序和系統都設置獨立的帳號。app
(Authored by Steve Mushero / ChinaNetCloud CEO & CTO 本博客英文原文請點擊查看)ide