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

MySQL 權限系統深度解析:user/db/tables_priv 五層授權模型與最佳實踐

     編輯:MySQL 綜合教學

權限系統架構:五張核心表

權限資料儲存於 mysql 系統庫:

表作用域核心欄位
user全域 (伺服器級)Host, User, Password, Select_priv, Update_priv... (全域權限)
db資料庫級Host, Db, User, Select_priv...
tables_priv資料表級Host, Db, User, Table_name, Table_priv (SET 型別)
columns_priv欄位級Host, Db, User, Table_name, Column_name, Column_priv
procs_priv存儲程序/函數級Host, Db, User, Routine_name, Routine_type, Proc_priv

權限檢查順序 (由粗到細)

  1. user 表:連線驗證 + 全域權限。
  2. db 表:資料庫級權限。
  3. tables_priv 表:資料表級權限。
  4. columns_priv 表:欄位級權限。
  5. procs_priv 表:程序權限。

任一層級滿足即通過,層層遞進。

user 表:登入守門員

  • 核心欄位:Host、User、Password (實際存 PASSWORD() 雜湊值)。
  • 密碼加密:INSERT INTO user (Host,User,Password) VALUES ('%','bill',PASSWORD('12345')); 切勿存明文。
  • 全域權限慎給:user 表權限對所有庫生效,含 mysql 系統庫。除 root 外建議全 N,改用 db 表授權。
  • Host 匹配:localhost (socket)、127.0.0.1 (TCP)、% (任意主機)、192.168.1.% (網段)。Root 建議僅 localhost。
  • 手動改權限後必須 FLUSH PRIVILEGES;。

db 表:資料庫級授權主戰場

GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,INDEX,ALTER ON bill_db.* TO 'bill'@'%';

tables_priv / columns_priv:精細管控

  • Table_priv / Column_priv 為 SET 型別,可選 SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,GRANT,INDEX,ALTER,REFERENCES。
  • 場景:開發僅需 SELECT、分析師需特定敏感欄位 SELECT、應用帳號禁止 DROP。

GRANT/REVOKE 最佳實踐

  1. 最小權限原則:只給業務必要權限。
  2. 避免 GRANT OPTION:除 DBA 外不給,防止權限傳遞失控。
  3. 按網段授權:'app'@'10.0.1.%' 而非 '%'。
  4. 定期審計:SELECT User,Host FROM mysql.user WHERE User NOT IN ('root','repl','monitor');
  5. MySQL 8.0 角色系統:CREATE ROLE 'app_read'; GRANT SELECT ON db.* TO 'app_read'; GRANT 'app_read' TO 'user'@'%';

常見連線失敗排查

錯誤原因解決
Access denied for user 'x'@'host'user 表無此 Host/User 組合新增對應 Host 記錄或用 %
Access denied for user 'x'@'%' to database 'db'db 表缺授權GRANT ON db.* TO 'x'@'%'
Table 'x' doesn't existtables_priv 缺 SELECTGRANT SELECT ON db.x TO 'x'@'%'
Command denied to user 'x'@'%' for table 'mysql.user'無系統庫權限正常,業務帳號不應有

總結

MySQL 權限系統採五層遞進模型,GRANT/REVOKE 是操作介面,底層維護五張表。掌握檢查順序與 Host 匹配規則,配合最小權限、按網段授權、定期審計,即可構建安全可控的資料庫存取體系。

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