當你連接一個MySQL服務器時
你通常應該使用一個口令
口令不以明文在連接上傳輸
所有其它信息作為能被任何人讀懂的文本被傳輸
如果你擔心這個
你可使用壓縮協議(MySQL
和以上版本)使事情變得更難
甚至為了使一切更安全
你應該安裝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命令完成
對於更多的細節
見
怎樣作為一個一般用戶運行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應該使主機名更安全
在任何情況下
你應該非常小心地使用包含通配符的主機名
From:http://tw.wingwit.com/Article/program/Oracle/201311/17910.html