Forum Dictionary / Programming / Database / Mysql /

怎樣使MySQL安全以對抗解密高手

New Subject
Random
Previous
Next
|
怎樣使MySQL安全以對抗解密高手

當你連接一個MySQL服務器時,你通常應該使用一個口令。口令不以明文在連接上傳輸。

所有其它信息作為能被任何人讀懂的文本被傳輸。如果你擔心這個,你可使用壓縮協議(MySQL3.22和以上版本)使事情變得更難。甚至為了使一切更安全,你應該安裝ssh(見http://www.cs.hut.fi/ssh)。用它,你能在一個MySQL服務器與一個MySQL客戶之間得到一個加密的TCP/IP連接。

為了使一個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。
如果你把一個Unix root用戶口令放在mysql.server腳本中,確保這個腳本只能對root是可讀的。
檢查那個運行mysqld的Unix用戶是唯一的在數據庫目錄下有讀/寫權限的用戶。
不要把process權限給所有用戶。mysqladmin processlist的輸出顯示出當前執行的查詢正文,如果另外的用戶發出一個UPDATE user SET password=PASSWORD('not_secure')查詢,被允許執行那個命令的任何用戶可能看得到。mysqld為有process權限的用戶保留一個額外的連接, 以便一個MySQL root用戶能登錄並檢查,即使所有的正常連接在使用。
不要把file權限給所有的用戶。有這權限的任何用戶能在擁有mysqld守護進程權限的文件系統那裡寫一個文件!為了使這更安全一些,用SELECT ... INTO OUTFILE生成的所有文件對每個人是可讀的,並且你不能覆蓋已經存在的文件。file權限也可以被用來讀取任何作為運行服務器的Unix用戶可存取的文件。這可能被濫用,例如,通過使用LOAD DATA裝載“/etc/passwd”進一個數據庫表,然它能用SELECT被讀入。
如果你不信任你的DNS,你應該在授權表中使用IP數字而不是主機名。原則上講,--secure選項對mysqld應該使主機名更安全。在任何情況下,你應該非常小心地使用包含通配符的主機名!

資料來源

  • Keywords : mysql, 用戶, 文件, 口令, 安全, 檢查, 可讀, 主機名, other_user, UPDATE, PASSWORD, MySQL服務器, 額外, 運行它以前, 運行mysqld, 進一, 連接上傳輸, 連接一, 連接, 這用su命令
0 0
2009-01-21T09:13:55+0000


  • Now, you can post comments by Facebook Account when your Yampiz account was logout or unvariable. whatever, we suggest to post comment by Yampiz Account to get more bounds to join new events of Heyxu
Comment
 
Verify