為了使一個MySQL系統安全,強烈要求你考慮下列建議:
對所有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;
不要作為Unix的root使用者運行MySQL守護進程。mysqld能以任何使用者運行,你也可以創造一個新的Unix使用者mysql使一切更安全。如果你作為其它Unix使用者運行mysqld,你不需要改變在user表中的root使用者名稱,因為MySQL使用者名稱與Unix 使用者名稱沒關係。你可以作為其它Unix使用者編輯mysql.server啟動指令碼mysqld。通常這用su命令完成。對於更多的細節,見18.8 怎樣作為一個一般使用者運行MySQL。
不要把process許可權給所有使用者。mysqladmin processlist的輸出顯示出當前執行的查詢本文,如果另外的使用者發出一個UPDATE user SET password=PASSWORD('not_secure')查詢,被允許執行那個命令的任何使用者可能看得到。mysqld為有process許可權的使用者保留一個額外的串連, 以便一個MySQL root使用者能登入並檢查,即使所有的正常串連在使用。
不要把file許可權給所有的使用者。
有這許可權的任何使用者能在擁有mysqld守護進程許可權的檔案系統那裡寫一個檔案!為了使這更安全一些,用SELECT ... INTO OUTFILE產生的所有檔案對每個人是可讀的,並且你不能覆蓋已經存在的檔案。