MySQL數據庫相信很多人都用過,MySQL數據庫受到廣大用戶的青睐,但是可能有很多人對MySQL數據庫授權不是很了解,接下來,本文就為大家解析MySQL數據庫授權原則。
服務器重新啟動的情況
當mysqld啟動時,所有的授權表內容被讀進存儲器並且從那時開始生效。
被服務器立即應用的情況
用GRANT、REVOKE或SET PASSWORD對授權表施行的修改會立即被服務器注意到。
直接修改授權表的情況
如果你手工地修改授權表(使用INSERT、UPDATE等等),你應該執行一個FLUSH PRIVILEGES語句或運行mysqladmin flush-privileges告訴服務器再裝載授權表,否則你的改變將不生效,除非你重啟服務器。
對現有客戶連接的影響情況
當服務器注意到授權表被改變了時,現存的客戶連接有如下影響:
授權原則
無論怎麼小心都難免在給用戶授權時留有漏洞,希望下面的內容能給你一些幫助,你一般應該遵守這些規則。
只有root用戶擁有授權表的改寫權
不要把授權表的改寫權授予除root用戶之外的其它用戶(當然,如果你可以用另一個用戶代替root用戶進行管理,以增加安全性)。因為這樣,用戶可以通過改寫授權表而推翻現有的權限。產生安全漏洞。
一般情況下,你可能不會犯這個錯誤,但是在安裝新的分發, 初始授權表之後。這個漏洞是存在的,如果你不了解這時授權表的內容你可能會犯錯誤。
在Unix(Linux)上,在按照手冊的指令安裝好MySQL後,你必須運行mysql_install_db腳本建立包含授權表的mysql數據庫和初始權限。在Windows上,運行分發中的Setup程序初始化數據目錄和mysql數據庫。假定服務器也在運行。
當你第一次在機器上安裝MySQL時,mysql數據庫中的授權表是這樣初始化的:
一般地,建議你刪除匿名用戶記錄:
mysql> DELETE FROM user WHERE User="";
更進一步,同時刪除其他授權表中的任何匿名用戶,有User列的表有db、tables_priv和columns_priv。
另外要給root用戶設置密碼。
關於用戶、口令及主機的設置
對所有MySQL用戶使用口令。
記住,如果other_user沒有口令,任何人能簡單地用mysql -u other_user db_name作為任何其它的人登錄。對客戶機/服務器應用程序,客戶可以指定任何用戶名是常見的做法。在你運行它以前,你可以通過編輯mysql_install_db腳本改變所有用戶的口令,或僅僅MySQL root的口令,象這樣:
shell> mysql -u root mysql
mysql> UPDATE user SET Password=PASSWORD('new_password')
-> WHERE user='root';
mysql> FLUSH PRIVILEGES;