MySQL 權限儲存在 mysql 系統資料庫的多張授權表中,分為三類:
| 類別 | 適用對象 | 風險等級 | 典型權限 |
|---|---|---|---|
| 普通用戶權限 | 開發、讀寫業務資料 | 低 | SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER 等 |
| 管理員權限 | DBA、運維 | 極高 | SHUTDOWN, RELOAD, PROCESS, FILE, SUPER, REPLICATION SLAVE/CLIENT 等 |
| 特殊權限 | 特定場景 | 視用途 | ALL PRIVILEGES, GRANT OPTION, USAGE 等 |
user:全域帳號、密碼、全域權限。db:資料庫級權限。tables_priv、columns_priv:表/欄級細粒度權限。procs_priv:存儲程序/函數權限。proxies_priv:代理用戶權限。SELECT, INSERT, UPDATE, DELETE,禁止 DROP, ALTER。SELECT;遷移/同步帳號加 REPLICATION SLAVE。CREATE, DROP, INDEX,但嚴禁 SHUTDOWN, FILE, SUPER。SHOW GRANTS FOR 'user'@'host'; 核對,離職即回收。-- 授權
GRANT SELECT, INSERT ON db_name.* TO 'app_user'@'10.0.%' IDENTIFIED BY 'strong_pwd';
-- 回收
REVOKE INSERT ON db_name.* FROM 'app_user'@'10.0.%';
-- 查看
SHOW GRANTS FOR 'app_user'@'10.0.%';
FILE:可讀寫伺服器任意檔案(配合 LOAD DATA INFILE、SELECT ... INTO OUTFILE)。SUPER:可殺死任何連線、修改全域變數、啟動/停止複寫。SHUTDOWN:可關閉資料庫服務。GRANT OPTION:可將自身權限轉授他人,權限擴散隱患極大。