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

MySQL 權限檢查機制深度解析:兩階段驗證、權限表層級與實戰授權模型

     編輯:MySQL 綜合教學

兩階段權限驗證

  1. 連接驗證:客戶端發起連接 → 檢查 user 表:Host、User、authentication_string(密碼)、plugin(認證插件)。匹配成功 → 進入階段二。
  2. 操作授權:執行 SQL → 按層級檢查權限:Global → Database → Table → Column → Routine/Proxy。

權限表層級架構(mysql 系統庫)

表層級範圍關鍵列
user全局整個服務器Select_priv, Insert_priv, ..., Super_priv, File_priv, Grant_priv
db庫級特定數據庫Host, Db, User, Select_priv...
tables_priv表級特定表Host, Db, User, Table_name, Table_priv, Column_priv
columns_priv列級特定列Host, Db, User, Table_name, Column_name, Column_priv
procs_priv程序級存儲過程/函數Host, Db, User, Routine_name, Routine_type, Proc_priv
proxies_priv代理級代理用戶Host, User, Proxied_host, Proxied_user, Grantor, With_grant

權限檢查邏輯(優先級遞減)

IF user_table グローバル権限 THEN ALLOW
ELSE IF db_table 库权限 THEN ALLOW
ELSE IF tables_priv 表权限 THEN ALLOW
ELSE IF columns_priv 列权限 THEN ALLOW
ELSE DENY

實戰授權模型

1. 開發人員(只讀+臨時表)

CREATE USER 'dev'@'%' IDENTIFIED BY 'dev_pass';
GRANT SELECT, CREATE TEMPORARY TABLES ON app_db.* TO 'dev'@'%';

2. 應用賬號(業務 CRUD,無 DDL)

CREATE USER 'app'@'10.0.%' IDENTIFIED BY 'strong_pass';
GRANT SELECT, INSERT, UPDATE, DELETE ON app_db.* TO 'app'@'10.0.%';

3. DBA 管理帳號(全權,僅內網)

CREATE USER 'dba'@'10.0.0.%' IDENTIFIED BY 'very_strong';
GRANT ALL PRIVILEGES ON *.* TO 'dba'@'10.0.0.%' WITH GRANT OPTION;

4. 只讀報表帳號(列級掩碼)

CREATE USER 'report'@'%' IDENTIFIED BY 'report_pass';
GRANT SELECT (id, name, status) ON app_db.users TO 'report'@'%';  -- 隱藏 phone/email

關鍵權限解析

權限作用風險等級
FILELOAD DATA INFILE / SELECT INTO OUTFILE高(讀寫服務器文件)
SUPERCHANGE MASTER, KILL, PURGE BINLOG, SET GLOBAL極高
REPLICATION SLAVE從庫連接主庫中
GRANT OPTION授權給他人高
SHUTDOWN關閉服務器極高

避坑指南

  1. 通配符主機 '%' 包含 localhost,**但不包含 127.0.0.1**(協議不同),需額外授權 'user'@'127.0.0.1'。
  2. 密碼插件:8.0 默認 caching_sha2_password,舊客戶端需 mysql_native_password。
  3. 權限緩存:FLUSH PRIVILEGES 僅在直接修改權限表時需要,GRANT 語句自動生效。
  4. 匿名用戶:安裝後執行 mysql_secure_installation 或手動 DROP USER ''@'localhost'; DROP USER ''@'%';。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved