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

MySQL 資料庫安全配置實戰:系統內部權限、網路存取控制、編程防注入與實用技巧

     編輯:MySQL 資料庫相關知識

MySQL 預設配置為了相容性犧牲了安全性,上線前必須進行系統級與網路級雙重加固。本文涵蓋資料目錄權限、帳號清理、網路綁定、防火牆、SQL 注入防禦與實用技巧。

一、系統內部安全:資料目錄權限鎖死

啟動 MySQL 的 OS 使用者 (如 mysql) 應唯一擁有資料目錄讀寫權:

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

驗證:ls -l /usr/local/mysql/var 應顯示 drwx------ (700),檔案 -rw------- (600)。

二、帳號與權限最小化

  • 刪除匿名帳號:DELETE FROM mysql.user WHERE User='';
  • 移除 test 資料庫:DROP DATABASE test; DELETE FROM mysql.db WHERE Db='test' OR Db='test\\_%';
  • Root 禁止遠端登入:UPDATE mysql.user SET Host='localhost' WHERE User='root'; FLUSH PRIVILEGES;
  • 業務帳號僅授權必要庫/表/欄位:GRANT SELECT,INSERT,UPDATE ON db.* TO 'app'@'10.0.0.%' IDENTIFIED BY 'strong_pwd';

三、網路層防護

  • 綁定本地回環:bind-address = 127.0.0.1 (僅本機存取)。
  • 防火牆僅放行應用伺服器 IP:iptables -A INPUT -p tcp -s 10.0.1.0/24 --dport 3306 -j ACCEPT。
  • 修改預設埠 3306 降低自動掃描風險 (需同步修改客戶端配置)。
  • 啟用 SSL 傳輸:require_secure_transport=ON,配置 ssl-ca/ssl-cert/ssl-key。

四、編程端防注入與最佳實務

  • 全域使用預處理語句 (Prepared Statement),拒絕字串拼接 SQL。
  • 錯誤訊息不回傳給前端,統一記錄錯誤日誌。
  • 資料庫帳號嚴禁給 DROP/ALTER/GRANT 權限。
  • 定期審核 mysql.general_log 或 audit_log 異常存取。

五、實用技巧

  • skip_name_resolve:跳過 DNS 反查,加速連線建立。
  • max_connect_errors=100000:避免誤觸發 Host blocked。
  • 備份腳本納入版控,異地加密存儲,定期演練還原。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved