首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL 權限系統深度解析:五大權限表結構、授權模型與安全加固實戰

     編輯:MySQL 綜合教學

權限系統架構:五層權限表分級控制

MySQL 權限驗證遵循 從全局到局部、層層疊加 原則:

表名範圍關鍵列修改方式說明
user全局 (實例級)Host、User、Password、全局權限列 (Select_priv...)GRANT/REVOKE ON *.*登入驗證、全局權限、資源限制、SSL/TLS
db資料庫級Host、Db、User、庫級權限列GRANT/REVOKE ON db.*特定庫的操作權限
tables_priv表級Host、Db、User、Table_name、Table_priv、Column_privGRANT/REVOKE ON db.tbl特定表的操作權限
columns_priv列級Host、Db、User、Table_name、Column_name、Column_privGRANT/REVOKE ON db.tbl(col)特定列的操作權限
procs_priv存儲過程/函數級Host、Db、User、Routine_name、Routine_type、Proc_privGRANT/REVOKE ON PROCEDURE/FUNCTION執行/修改存儲程序權限 (5.0+)

註: host 表輔助 db 表控制特定主機的庫級權限,不受 GRANT/REVOKE 影響,極少直接操作。

權限驗證邏輯:層層疊加

  
    權限適用範圍操作示例風險等級
  
  
    SELECT全局/庫/表/列SELECT * FROM tbl低
    INSERT/UPDATE/DELETE全局/庫/表/列DML 操作中
    CREATE/DROP/ALTER/INDEX全局/庫/表DDL 操作高
    CREATE TEMPORARY TABLES全局/庫CREATE TEMPORARY TABLE中
    EXECUTE全局/庫/過程CALL proc()中
    FILE全局LOAD DATA INFILE、SELECT ... INTO OUTFILE極高 (讀寫服務器文件)
    GRANT OPTION全局/庫/表將自己權限授予他人高 (權限傳遞)
    LOCK TABLES全局/庫/表LOCK TABLES tbl READ/WRITE中
    PROCESS全局SHOW PROCESSLIST、KILL (5.1+ 需 SUPER)中
    RELOAD全局FLUSH、RESET、mysqladmin reload/flush-*高
    REPLICATION CLIENT/SLAVE全局SHOW MASTER/SLAVE STATUS、複制連接高
    SHOW DATABASES全局SHOW DATABASES低
    SUPER全局KILL、SET GLOBAL、CHANGE MASTER、PURGE BINLOG、DEBUG極高 (實例級控制)
    CREATE USER全局CREATE/RENAME/DROP USER高
    ALL PRIVILEGES對應範圍該範圍所有權限 (除 GRANT OPTION)極高



SSL/TLS 加密連接控制 (user 表 ssl_type 欄位)

ssl_type 值含義GRANT 子句
NONE (預設)不要求加密
ANY要求加密,任意類型REQUIRE SSL
X509要求加密 + 客戶端憑證REQUIRE X509
SPECIFIED要求加密 + 指定簽發者/主體/加密套件REQUIRE ISSUER/SUBJECT/CIPHER

資源限制 (user 表)

  • max_questions:每小時最大查詢數
  • max_updates:每小時最大更新數
  • max_connections:每小時最大連接數
  • max_user_connections:同時最大連接數 (全局變量也可控制)
  • 全為 0 表示無限制

GRANT/REVOKE 內部處理流程

  1. 解析權限範圍:*.* → user 表;db.* → db 表;db.tbl → tables_priv;db.tbl(col) → columns_priv
  2. 在對應表中 INSERT/UPDATE 記錄 (Host、User、Db、Table_name、Column_name 組成主鍵)
  3. 設置對應權限列為 'Y'
  4. REVOKE 將權限列設為 'N',若全為 'N' 可選刪除記錄
  5. 刷新內存權限緩存 (FLUSH PRIVILEGES 隱式執行)

安全加固實戰清單 (必執行)

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