導讀mysql
如何提升MySQL的安全性?sql
數據庫的安全性無疑很重要,這裏教你們幾招簡單方法提升安全性。數據庫
1. 正確設置 datadir 權限模式安全
關於 datadir 正確的權限模式是 0750,甚至是 0700。socket
也就是最多隻容許 mysqld 進程屬主用戶及其所在用戶組可訪問,但只有屬主可修改文件。tcp
最好是直接設置成 0700,相對更安全些,避免數據文件意外泄漏。工具
2. 將 mysql socket 文件放在 datadir 下加密
不少人習慣將 mysql socket文件放在 /tmp 目錄下。spa
尤爲是跑多實例時,/tmp 目錄下可能有 mysql3306.sock、mysql3307.sock、mysql3308.sock 等多個這樣的文件。server
要注意,mysql.sock 文件默認的權限模式是 0777,也就是任何人都有機會經過 /tmp 目錄下的 socket 文件直接登入 mysql,尤爲是root密碼爲空或弱密碼,而且還容許本地 socket 方式登入時,是個比較危險的安全隱患。
所以,咱們強烈建議把 mysql socket 文件放置在每一個實例本身的 datadir 下,而且參考第一條建議,設置正確的權限模式。同時甚至也能夠把 mysql.sock 文件權限模式修改成 0700。
3. 使用login-path
通常來講,咱們會爲每一個mysql帳戶設置密碼,這樣是安全了,但使用和維護起來就不方便了。
每次登入都要輸入密碼,尤爲是調用mysql client工具時,若是直接將密碼寫在client工具的選項裏,則是很是危險的行爲,從歷史命令就能看到密碼了,而且會有相似下面的提示:
這時候,咱們其實能夠利用 login-path 功能來提升安全性及便利性。
login-path 特性是MySQL 5.6新增的。
首先,利用 mysql_config_editor 配置login-path:
設置完後,就會在該用戶的 $HOME目錄下生成 .mylogin.cnf 文件:
這是個加密的二進制文件,即使用明文方式查看,也是沒法顯示密碼的:
接下來能夠利用 login-path 很方便的登入 mysqld 而無需額外的密碼:
在作好前面兩條安全規則的前提下,即使萬一某個高權限等級用戶的 .mylogin.cnf 文件被其餘普通用戶盜取,也沒法利用 socket 方式登入 mysql。
固然了,除非你以前在 login-path 裏設置的是走 tcp/ip 方式,那就悲劇了~
下面是假設 yejr 普通帳號想利用 root 帳號的 .mylogin.cnf 文件登入,報告失敗,由於沒法訪問 /data/mysql57/mysql.sock 文件: