通常我們在串連MySQL的伺服器時,要使用到口令。這個口令在網路上傳輸的時候是加過密的。可是其它的內容都是以明文的方式來進行傳輸的。
當然如果擔心這個不安全的話,可以使用壓縮協議(MySQL3.22和以上版本),這樣可以讓其它的內容不那麼容易就被看到。甚至為了讓它更加安全,可以考慮下安裝ssh。裝上它之後,你就能在MySQL伺服器與MySQL客戶之間,搭建一條加密的TCP/IP串連。
為了使你的MySQL系統更安全,強烈建議考慮以下建議:
1.為每個MySQL使用者使用口令。如果你不加設口令的話,其他人可以通過mysql --user other_user database的方式訪問你的資料庫,在使用MySQL進行檢測的時候系統也會給你相應的警告資訊。
2.通過mysql_install_db指令碼建立mySQL的授權表,你可以通過mysql -u root進行測試,正確的情況下應該不會發生錯誤。更改root的密碼:
shell> mysql -u root mysql
mysql> UPDATE user SET Password=PASSWORD( ew_password)
WHERE user= root;
mysql> FLUSH PRIVILEGES;
3.不要用root方式啟動MySQL服務。MySQL可以以任何使用者啟動。你可以通過添加一個新使用者的方式來啟動資料庫服務(也就是mysql低許可權運行)。這也不會對系統造成任何影響,因為MySQL的使用者和Unix的使用者根本來說就使不同的。
4.如果你把Unix root使用者口令放在了mysql.server指令碼中,那麼必須確保這個指令碼只對root是可讀的。檢查那個運行mysqld的使用者,確保這個使用者是唯一在資料庫目錄下有讀/寫入權限的使用者。
5.不要把process許可權給任何人。mysqladmin processlist的輸出會顯示出當前正在執行的查詢本文,這時如果有另外的使用者發出一個UPDATE user SET password=PASSWORD( ot_secure)查詢,則會被有process許可權的使用者看得到查詢。mysqld為有process許可權的使用者保留一個額外的串連, 以便一個MySQL root使用者能登入並檢查,即使所有的正常串連在使用。
6.不要把file許可權給所有的使用者。有這許可權的使用者能在擁有mysqld守護進程許可權的檔案系統那裡寫一個檔案! file許可權也可以被用來讀取任何作為運行伺服器的Unix使用者可存取的檔案。這可能被利用,例如,通過使用LOAD DATA裝載"/etc/passwd"進一個資料庫表,然後它能用SELECT被讀入。
7. 如果你不信任你的DNS,你應當使用IP來取代主機名稱。在任何情況下,你應該非常小心地使用包含萬用字元的主機名稱!
相信通過以上的設定過後,你的Mysql主機應該已經相對比較安全,不是那麼輕鬆就會讓人攻陷的。