MySQL 作為廣泛部署的開源資料庫,其安全性直接關係業務資料的機密性、完整性與可用性。本文整理 23 項實務守則,涵蓋網路傳輸、帳號權限、應用防禦、伺服器設定等面向,協助 DBA 與開發人員建立纵深防禦體系。
nmap 或 telnet 驗證埠口暴露狀態。root 外,任何帳號不得存取 mysql.user 系統表,防止密碼雜湊外洩導致橫向移動。SELECT/INSERT/UPDATE/DELETE),嚴禁授予 PROCESS、SUPER、FILE 等高危權限。max_user_connections 限制單一帳號連線數,搭配 GRANT 的 MAX_QUERIES_PER_HOUR 等資源控制選項,防止濫用導致拒絕服務。SHA2()、bcrypt 等強雜湊(舊版可用 PASSWORD() 但不建議),並定期輪換。mysqli_real_escape_string、Java PreparedStatement),並針對單雙引號、井號、反斜線等特殊字元編碼。mysqld 必須以專屬非 root 系統帳號運行,資料目錄僅授予該帳號讀寫權限。--skip-symbolic-links,防止透過符號連結繞過目錄限制讀寫任意檔案。LOAD DATA LOCAL INFILE,設定 --local-infile=0 關閉客戶端本地檔案匯入功能。host 欄位僅允許 IP 位址或 CIDR 區段,避免主機名偽造。long_query_time)、一般查詢日誌或審計外掛(如 MariaDB Audit Plugin),定期分析異常存取模式。--skip-grant-tables --skip-networking 啟動實例(僅本地連線、跳過權限檢查)。mysql -u root。ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewStrongPass!'; FLUSH PRIVILEGES;(MySQL 5.7+ 語法)。資料庫安全非單一設定可完備,需結合網路隔離、最小權限、參數化查詢、加密傳輸、審計監控、定期滲透測試等多層面持續經營。建議將上述 23 項納入上線核查清單,並隨版本升級、架構變更同步檢視調整。