首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL 安全配置指南(上):文件權限、用戶隔離、日志防洩漏

     編輯:MySQL 資料庫相關知識

MySQL 安全需從系統層、數據層、網絡層、應用層多維加固。本文(上)聚焦系統內部安全:目錄權限、啟動用戶、日志敏感信息防洩漏。

目錄結構與權限基線

數據目錄(/usr/local/mysql/var)權限演進:

版本權限風險
3.21.x775任意本地用戶可讀
3.22.x770同組用戶可讀寫
3.23.x+700僅啟動用戶可訪問 ✓

標準安全屬性

drwx------ 4 mysql mysql 4096 var/
drwx------ 2 mysql mysql 4096 var/mysql/
-rw------- 1 mysql mysql 8778 var/mysql/columns_priv.frm
...

修正命令:

chown -R mysql.mysql /usr/local/mysql/var
chmod -R go-rwx /usr/local/mysql/var

禁止 Root 啟動 MySQL

  • 3.23.15+ 默認強制 mysql 用戶啟動
  • Root 啟動導致 LOAD DATA INFILE/SELECT ... INTO OUTFILE 擁有 Root 寫權限
  • 強制啟動需 --user=root 參數(極不推薦)

Shell 歷史與 MySQL 歷史防洩漏

命令行帶密碼會寫入 ~/.bash_history,SQL 語句寫入 ~/.mysql_history。

錯誤示範:

mysqldump -uroot -ptest db > backup.sql
mysql -uroot -ptest

正確做法:

mysqldump -uroot -p db > backup.sql  # 交互輸入密碼
mysql -uroot -p

徹底禁用歷史記錄:

rm ~/.bash_history ~/.mysql_history
ln -s /dev/null ~/.bash_history
ln -s /dev/null ~/.mysql_history

下篇預告

外部網絡安全:防火牆、SSL 加密、綁定地址、跳板機、審計插件;編程層面:預處理語句、注入防護、錯誤信息脫敏。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved