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

MySQL 資料庫 23 項安全檢查清單:從網路加密到權限最小化完整指南

     編輯:MySQL 資料庫相關知識

網路與傳輸層

  1. 跨非信任網路必須 SSH 隧道 或 SSL 加密。
  2. 密碼修改:SET PASSWORD FOR 'user'@'host' = PASSWORD('newpwd'); FLUSH PRIVILEGES;
  3. 防範竊聽、篡改、重放、拒絕服務;基於 ACL (Access Control List) 控制。

核心權限管控

  1. mysql.user 表僅 root 可讀,密碼雜湊外洩即等同帳號被盜。
  2. 使用 GRANT/REVOKE 管理權限,避免直接操作授權表。
  3. 禁用明文密碼,應用層用 SHA2()/BCRYPT 儲存(MySQL 8.0 caching_sha2_password 預設)。
  4. 拒絕字典弱密碼,啟用 validate_password 外掛。

網路邊界防護

  1. 防火牆封鎖 3306 對外,資料庫置於 DMZ 或內網。
  2. nmap -p 3306 / telnet host 3306 定期掃描驗證。
  3. Web 表單參數化:字串用引號包裹,動態 URL 編碼 %22/%27,嚴禁拼接 SQL。
  4. 輸入長度檢查,防超長載荷攻擊。

應用程式連線帳號

  1. 專用帳號,最小權限(僅 SELECT/INSERT/UPDATE/DELETE 業務表)。
  2. 各語言驅動使用專用逃逸函數(mysqli_real_escape_string、PDO::quote、PreparedStatement)。

傳輸加密驗證

  1. 網路抓包驗證:tcpdump -i eth0 -w - port 3306 | strings 不應見明文 SQL/密碼。
  2. 以普通用戶啟動 mysqld(非 root)。

檔案系統與進階權限

  1. --skip-symbolic-links 禁用符號連結攻擊。
  2. MySQL 資料目錄僅啟動用戶可讀寫(chown -R mysql:mysql /var/lib/mysql; chmod 750)。
  3. PROCESS/SUPER 僅授予 DBA,防洩露查詢文本、切斷連線、修改運行參數。
  4. FILE 權限僅 root,防 LOAD DATA INFILE '/etc/passwd' 讀取系統檔案。

DNS 與資源限制

  1. 不信任 DNS 時,授權表 Host 欄位僅填 IP。
  2. max_user_connections 限制單帳號並發,防單一應用佔滿連線池。
  3. GRANT ... WITH MAX_QUERIES_PER_HOUR ... 資源控制選項。

啟動安全開關

  1. --local-infile=0 禁用 LOAD DATA LOCAL。
  2. --skip-grant-tables 僅緊急救援用,平時嚴禁。
  3. --skip-show-databases 隱藏資料庫列表。

錯誤 1045 急救

mysqld_safe --skip-grant-tables &
mysql -u root mysql
UPDATE user SET authentication_string=PASSWORD('newpass') WHERE User='root';
FLUSH PRIVILEGES;
# 正常重啟
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved