首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL 使用安全 23 條軍規:從網路加密到權限最小化完整清單

     編輯:MySQL 綜合教學

網路傳輸安全

  1. 跨不可信網路必須加密:SSH 隧道、SSL/TLS、VPN,禁止明文傳輸 3306 埠。
  2. 啟用 SSL:require_secure_transport=ON 強制所有連線加密。

認證與授權

  1. 修改 root 密碼三步走:mysql -u root → UPDATE mysql.user SET authentication_string=PASSWORD('new') WHERE User='root'; → FLUSH PRIVILEGES;
  2. 防範四大攻擊:竊聽、篡改、重放、拒絕服務。基於 ACL (授權表) + SSL 多層防護。
  3. 非 root 禁訪 mysql.user:該表存加密密碼,洩露即全庫淪陷。
  4. 使用 GRANT/REVOKE 管理權限:不用直操作授權表,避免語法錯誤與快取不一致。
  5. 禁用明文密碼:應用層存儲 SHA2(password, 256) 或 bcrypt,資料庫帳號密碼定期輪換。
  6. 拒絕弱密碼:啟用 validate_password,長度≥14、含大小寫數字特殊字符、字典檢查。
  7. 防火牆收斂 3306:僅允許應用伺服器 IP 存取,或繫結 bind-address=127.0.0.1。
  8. 輸入驗證防注入:參數化查詢、mysql_real_escape_string、嚴格型別檢查、長度限制。
  9. 應用帳號最小權限:僅 SELECT/INSERT/UPDATE/DELETE 特定庫表,無 DROP/ALTER/GRANT。
  10. 各語言使用官方轉義:PHP mysqli_real_escape_string、Java PreparedStatement、Python cursor.execute(%s)、Perl $dbh->quote()、C API mysql_real_escape_string()。

作業系統與檔案層面

  1. TCP 封包審計:tcpdump -l -i eth0 -w - src or dst port 3306 | strings 檢測明文洩露。
  2. 以普通用戶啟動 mysqld:禁止 root 啟動,防提權。
  3. 禁用符號連結:--skip-symbolic-links 防止繞過目錄限制。
  4. 資料目錄權限 700:chown -R mysql:mysql /var/lib/mysql; chmod -R 700 /var/lib/mysql。
  5. 嚴控 PROCESS/SUPER/FILE 權限:僅 DBA 擁有,防查詢文本洩露、關閉服務、任意讀寫檔案。
  6. FILE 權限僅管理員:防 LOAD DATA INFILE '/etc/passwd' 讀取系統敏感檔。
  7. 不信任 DNS:授權表 Host 僅用 IP/CIDR,避免 DNS 劫持繞過限制。
  8. 限制單用戶連線數:max_user_connections、GRANT ... WITH MAX_CONNECTIONS_PER_HOUR。
  9. GRANT 支援資源限制:MAX_QUERIES_PER_HOUR, MAX_UPDATES_PER_HOUR, MAX_USER_CONNECTIONS。

啟動參數安全開關

  1. 關閉 LOCAL INFILE:--local-infile=0 防客戶端任意讀本地檔。
  2. 慎用 --skip-grant-tables:僅緊急重置密碼時臨時啟用,用畢即移除並 FLUSH PRIVILEGES。
  3. 隱藏資料庫列表:--skip-show-databases 非管理帳號不可 SHOW DATABASES。

緊急情況:Error 1045 密碼重置

1. mysqld --skip-grant-tables --skip-networking &
2. mysql -u root mysql
3. UPDATE user SET authentication_string=PASSWORD('newpass') WHERE User='root';
4. FLUSH PRIVILEGES;
5. 重啟正常服務

落地執行清單

[ ] 所有連線強制 TLS 1.2+
[ ] validate_password 強策略啟用
[ ] 應用帳號單庫 DML 權限
[ ] 防火牆僅放行應用 IP:3306
[ ] bind-address 內網 IP
[ ] 資料目錄 700 權限
[ ] 審計插件接入日誌平台
[ ] 月度 CVE 掃描修補
[ ] 季度權限複核
[ ] 年度滲透測試
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved