通常我們在連接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主機應該已經相對比較安全,不是那麼輕松就會讓人攻陷的。