本系列首篇,建立 MySQL 安全的整體認知框架:帳號三要素結構、三層驗證模型(登入認證 → 授權 → 存取控制)、權限分類總覽,為後續細節篇奠基。
app_user)。% 通配符、localhost)。mysql.user 表 authentication_string 欄位)。關鍵特性:'app_user'@'10.0.0.1' 與 'app_user'@'10.0.0.2' 是**兩個獨立帳號**,可設不同密碼、不同權限。這實現了「同一用戶名,不同來源不同信任度」的精細控制。
GRANT SELECT ON db1.* TO 'alice'@'server1' IDENTIFIED BY 'pwd1';
GRANT SELECT ON db2.* TO 'alice'@'server1' IDENTIFIED BY 'pwd2';
-- alice 從 server1 連 db1 用 pwd1,連 db2 用 pwd2,互不干擾
User + Host + Password,通過則建立連線會話。user、db、tables_priv、columns_priv、host)計算該會話擁有的**全域/庫/表/欄位權限集合**。SELECT/INSERT/UPDATE/DELETE/INDEX/ALTER... )是否在會話權限集內,**布爾判斷:允許/拒絕**。| 類別 | 權限 | 說明 |
|---|---|---|
| 資料操作 (DML) | SELECT | 查詢資料(無則僅能做 SELECT 1+1 等純運算) |
INSERT | 插入新行 | |
UPDATE | 修改現有行 | |
DELETE | 刪除行 | |
| 結構管理 (DDL) | INDEX | 建立/刪除索引 |
ALTER | 修改表結構 | |
CREATE | 建立資料庫/表/索引 | |
DROP | 刪除資料庫/表/視圖 | |
| 權限管理 | GRANT | 授予他人權限(高危) |
REFERENCES | 外鍵引用 | |
CREATE USER | 建立/刪除/重命名用戶(5.7+) | |
| 伺服器管理 | RELOAD | FLUSH 操作 |
SHUTDOWN | 關閉伺服器(極高危) | |
PROCESS | SHOW PROCESSLIST / KILL(高危) | |
FILE | LOAD DATA INFILE / SELECT INTO OUTFILE(極高危) | |
SUPER | 全域變數、殺任意連線、複製控制、Binlog 管理(極高危) | |
REPLICATION SLAVE/CLIENT | 複製專用 |
user、db、tables_priv、columns_priv、host)均為 **MyISAM** 表,儲存於 mysql 系統庫。SELECT/INSERT/UPDATE/DELETE)直接維護,便於自動化腳本、審計查詢。FLUSH PRIVILEGES 或重啟**生效;優先使用 GRANT/REVOKE 避免不一致。建議按序閱讀,構建從「認識帳號」到「傳輸加密」到「儲存加密」的完整防禦纵深體系。