MySQL的安全體系建立在精細的訪問控制和賬號管理機制上。本文基于MySQL 9.3官方文檔,深入解析其核心原理、關鍵技術、實用技巧和行業最佳實踐。
一、訪問控制核心原理:雙重驗證機制
-
連接驗證 (Connection Verification)
- 客戶端發起連接時,MySQL依據
user_name@host_name
組合進行身份驗證 - 驗證信息存儲在
mysql.user
系統表中(用戶名、主機名、認證插件、憑證哈希值) - 主機名支持通配符(
%
匹配任意字符,_
匹配單個字符)和子網掩碼表示法(192.168.1.0/255.255.255.0
) - 匹配規則:先精確匹配,后通配符匹配(主機名優先于用戶名通配)
- 客戶端發起連接時,MySQL依據
-
請求驗證 (Request Verification)
- 連接建立后,用戶執行的每個操作(語句)都需進行權限檢查
- 系統通過
mysql.db
,mysql.tables_priv
,mysql.columns_priv
,mysql.procs_priv
,mysql.global_grants
等表驗證權限 - 權限計算邏輯:全局權限
OR
數據庫權限OR
表權限OR
列權限
二、賬號管理核心技術
-
賬號創建與基礎管理
CREATE USER
:創建用戶賬戶,指定認證方式(IDENTIFIED WITH plugin_name BY 'password'
/IDENTIFIED BY 'password'
)和密碼策略(PASSWORD EXPIRE
,PASSWORD HISTORY
等)ALTER USER
:修改用戶屬性(密碼、認證插件、鎖定狀態、資源限制、MFA設置)DROP USER
:刪除用戶(級聯刪除其權限)RENAME USER
:安全地修改用戶名
-
權限授予與回收
GRANT
:授予權限(支持細化到列/存儲程序)- 全局權限:
GRANT SELECT ON *.* TO user
- 數據庫權限:
GRANT INSERT ON db_name.* TO user
</
- 全局權限: