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

MySQL 使用 23 條鐵律:從連線加密到權限最小化的完整安全清單

     編輯:MySQL 資料庫相關知識

網路與傳輸層

  1. SSH 隧道:跨不可信網路連線必須加密通道
  2. 密碼管理:SET PASSWORD 三步驟修改,避免明文傳輸
  3. 防禦面:防竊聽、篡改、重放、拒絕服務;基於 ACL 存取控制

帳號與權限核心

  1. user 表隔離:僅 root 可存取 mysql.user,密碼雜湊外洩即帳號淪陷
  2. GRANT/REVOKE:標準權限管理介面
  3. 單向雜湊:應用層用 SHA2()、bcrypt,資料庫層不存明文
  4. 強密碼策略:拒絕字典字、啟用 validate_password

基礎設施防護

  1. 防火牆:阻擋 50% 外部攻擊,資料庫置於 DMZ 或內網
  2. 端口掃描驗證:nmap -p 3306 / telnet host 3306 確認 3306 不對外開放
  3. SQL 注入防禦:參數化查詢、輸入長度檢查、特殊字元轉義(%22 %23 %27)
  4. 傳輸加密:SSL/SSH 加密傳輸,避免明文

作業系統與檔案層

  1. 專用啟動用戶:非 root 啟動 mysqld,my.cnf [mysqld] user=mysql
  2. tcpdump 稽核:tcpdump -l -i eth0 -w - src or dst port 3306 | strings 檢查明文洩漏
  3. 禁用符號連結:--skip-symbolic-links 防止任意檔案讀寫
  4. datadir 權限收斂:僅 mysqld 用戶可讀寫

高危權限管控

  1. PROCESS/SUPER:僅 DBA,防止查詢竊取、服務器控制濫用
  2. FILE:僅 DBA,防止 LOAD DATA '/etc/passwd' 讀取系統檔
  3. DNS 信任:授權表用 IP,謹慎用通配符主機名

資源限制與啟動選項

  1. max_user_connections:限制單帳號連線數
  2. GRANT 資源選項:MAX_QUERIES_PER_HOUR 等
  3. 啟動開關:
    • --local-infile=0 禁用 LOAD DATA LOCAL
    • --skip-grant-tables 緊急模式(需立即 FLUSH PRIVILEGES 恢復)
    • --skip-show-databases 隱藏資料庫列表

緊急修復:Error 1045 Access Denied

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