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

MySQL 權限系統核心:五大授權表深度解析

     編輯:MySQL 資料庫相關知識

MySQL 權限架構總覽

MySQL 通過 mysql 系統庫中的五張授權表實現精細化權限控制,權限檢查遵循「由全域到局部、由粗到細」的層級遞進邏輯。

五大授權表結構與職責

表名作用域核心功能特殊欄位
user 全域(伺服器級) 決定用戶能否連線,定義全域權限(如 SUPER, FILE) Host, User, Password + 30+ 權限欄位
db 資料庫級 控制「哪個用戶、從哪個主機、能訪問哪個資料庫」 Host, Db, User + 權限欄位
host 資料庫級輔助 擴充 db 表:當 db.Host 為空時,查詢此表匹配具體主機 Host, Db + 權限欄位
tables_priv 資料表級 針對特定表的權限(SELECT, INSERT, UPDATE...) Table_name, Grantor, Timestamp
columns_priv 欄位級 針對特定表特定欄位的權限 Column_name, Timestamp

權限檢查流程(簡化版)

  1. 連線階段:檢查 user 表 → 允許連線 + 獲得全域權限
  2. 執行 SQL:依序檢查 db → host → tables_priv → columns_priv
  3. 權限疊加:各層級權限聯集生效(任一層級允許即通過)

實戰管理技巧

  • 最小權限原則:業務帳號僅授 db 或 tables_priv 級別,避免寫入 user 表。
  • 定期審計:SELECT * FROM mysql.user WHERE User != 'root'; 檢查無用帳號。
  • FLUSH PRIVILEGES:直接修改授權表後必須執行,或改用 GRANT/REVOKE 自動生效。
  • MySQL 8.0 變化:引入 global_grants, role_edges 等新表,支援角色體系。

常見誤區

「授權表只能用 GRANT 修改」——錯。超級用戶可直接 INSERT/UPDATE/DELETE 授權表,但必須執行 FLUSH PRIVILEGES 才生效。這在批量初始化權限時很有用。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved