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

MySQL 通訊加密與系統加固指南:從密碼傳輸到 SSH 隧道全方位防護

     編輯:MySQL 資料庫相關知識

MySQL 默認協議:密碼經挑戰-響應加密傳輸(不為明文),但所有其他數據(查詢、結果、錯誤信息)均為明文。本文提供從協議壓縮、SSL/TLS 加密、SSH 隧道、到系統級加固的分層防護建議。

一、傳輸層加密選項

  1. 壓縮協議(3.22+):mysql --compress,增加嗅探難度,但非加密,無法防竊聽。
  2. SSL/TLS(推薦):配置服務端 ssl-ca、ssl-cert、ssl-key,客戶端 --ssl-mode=REQUIRED,實現端到端加密。
  3. SSH 隧道(最強):
    # 客戶端建立隧道
    ssh -L 3307:localhost:3306 user@db_server
    # 連接本地 3307 即經過加密通道訪問遠程 3306
    mysql -h 127.0.0.1 -P 3307 -u dbuser -p
        
    適用於跨公網訪問、無法部署 SSL 憑證的舊版本環境。

二、系統級加固清單(必執行)

  1. 全用戶強制密碼:
    UPDATE mysql.user SET Password=PASSWORD('strong') WHERE User='root';
    FLUSH PRIVILEGES;
        
    空密碼帳號等同無認證,任何人可 mysql -u other_user db 登入。
  2. 禁用 root 運行 mysqld:創建專用 mysql 用戶,啟動腳本用 su - mysql -c mysqld_safe。root 運行導致 FILE 權限等同系統最高權限。
  3. 數據目錄權限收歸:僅 mysql 用戶擁有 datadir 讀寫權限(chmod 700/chown mysql:mysql)。
  4. 收回 PROCESS 權限:SHOW PROCESSLIST 會洩露正在執行的 SET PASSWORD 等敏感 SQL。僅保留 root 及監控帳號。
  5. 收回 FILE 權限:SELECT ... INTO OUTFILE 可寫文件,LOAD DATA INFILE 可讀 /etc/passwd 等敏感文件。僅備份帳號保留,並設置 secure_file_priv 限制目錄。
  6. 授權表使用 IP 而非主機名:防範 DNS 劫持/欺騙。啟動參數 --skip-name-resolve 禁用 DNS 解析,提升連接性能與安全性。
  7. 嚴格控制通配符主機名:%、%.domain.com 極易誤匹配,原則上僅允許具體 IP/主機名。

三、進階建議

  • 啟用 --secure-auth 拒絕預 4.1 協議客戶端(老版本密碼雜湊極弱)。
  • 部署審計插件(MariaDB Audit Plugin / MySQL Enterprise Audit)記錄所有 DDL/DML/登入事件。
  • 定期執行 mysql_secure_installation(官方腳本)自動化基線檢查。
  • 備份加密:mysqldump | openssl enc -aes-256-cbc -out backup.sql.enc。

安全是系統工程:傳輸加密保護數據在途,系統加固守住數據落地,審計監控發現異常,備份加密應對極端丟失。分層防禦,方能高枕無憂。

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