MySQL 權限系統基於「用戶@主機」模型,支援全局、庫級、表級、列級、存儲過程級多層次授權。本文詳細講解 GRANT 語句、直接操作 mysql.user/db 系統表、圖形化工具 phpMyAdmin 三種管理方式,並附權限項完整速查表。
'username'@'host',host 支援 %(任意)、192.168.1.%(通配)、localhost(本地 Unix socket)、具體 IPmysql.user(全局)、mysql.db(庫級)、mysql.tables_priv(表級)、mysql.columns_priv(列級)、mysql.procs_priv(存儲過程)GRANT priv_type [(columns)] ON [db.]tbl_name TO 'user'@'host' [IDENTIFIED BY 'password'] [WITH GRANT OPTION];
-- 全庫全表所有權限(相當於 root)
GRANT ALL PRIVILEGES ON *.* TO 'monty'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION;
-- 特定庫讀寫權限
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON mydb.* TO 'app_user'@'192.168.1.%' IDENTIFIED BY 'password';
-- 僅讀權限
GRANT SELECT ON mydb.* TO 'readonly'@'%' IDENTIFIED BY 'password';
-- 列級權限(敏感欄位保護)
GRANT SELECT (id, name, email), UPDATE (name, email) ON mydb.users TO 'hr'@'localhost';
FLUSH PRIVILEGES;
MySQL 8.0+ 多數 GRANT 隱式刷新,但建議保留習慣。
REVOKE INSERT, UPDATE ON mydb.* FROM 'app_user'@'192.168.1.%';
FLUSH PRIVILEGES;
DROP USER 'test'@'localhost';
-- 或舊版
DELETE FROM mysql.user WHERE User='test' AND Host='localhost';
FLUSH PRIVILEGES;
-- 創建用戶(需手動填寫所有權限列)
INSERT INTO mysql.user (Host, User, authentication_string, ssl_cipher, x509_issuer, x509_subject)
VALUES ('192.168.206.%', 'high_vod', PASSWORD('high_vod'), '', '', '');
-- 庫級權限
INSERT INTO mysql.db (Host, Db, User, Select_priv, Insert_priv, Update_priv, Delete_priv, Create_priv, Drop_priv, Grant_priv, References_priv, Index_priv, Alter_priv, Create_tmp_table_priv, Lock_tables_priv, Create_view_priv, Show_view_priv, Create_routine_priv, Alter_routine_priv, Execute_priv, Event_priv, Trigger_priv)
VALUES ('192.168.206.%', 'high_vod', 'high_vod', 'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');
FLUSH PRIVILEGES;
警告:MySQL 8.0 權限表結構大變(authentication_string、password_expired、account_locked 等),直操作極易出錯,**強烈不推薦**生產環境使用。









| 分類 | 權限 | 說明 |
|---|---|---|
| 數據操作 (DML) | SELECT | 讀取數據 |
| INSERT | 插入/替換數據 | |
| UPDATE | 修改數據 | |
| DELETE | 刪除數據 | |
| FILE | LOAD DATA INFILE / SELECT INTO OUTFILE | |
| 結構操作 (DDL) | CREATE | 創建庫/表/索引 |
| ALTER | 修改表結構 | |
| INDEX | 創建/刪除索引 | |
| DROP | 刪除庫/表/視圖 | |
| CREATE TEMPORARY TABLES | 創建臨時表 | |
| CREATE VIEW | 創建視圖 | |
| SHOW VIEW | 查看視圖定義 | |
| CREATE ROUTINE | 創建存儲過程/函數 | |
| ALTER ROUTINE | 修改/刪除存儲過程 | |
| EXECUTE | 執行存儲過程 | |
| 管理權限 | GRANT OPTION | 授權/撤銷權限(不含 RELOAD) |
| SUPER | 超級權限:KILL 線程、SET GLOBAL、CHANGE MASTER、PURGE BINLOG 等 | |
| PROCESS | 查看完整進程列表(SHOW FULL PROCESSLIST) | |
| RELOAD | FLUSH PRIVILEGES/LOGS/TABLES/HOSTS 等 | |
| SHUTDOWN | 關閉服務器 | |
| SHOW DATABASES | 查看所有庫列表 | |
| LOCK TABLES | 顯式鎖表 | |
| REPLICATION CLIENT | 查看主從狀態(SHOW MASTER/SLAVE STATUS) | |
| REPLICATION SLAVE | 從庫連接主庫讀取 Binlog | |
| CREATE USER | 創建/刪除/重命名用戶 |
Host='localhost' 或具體應用服務器 IPSELECT User, Host FROM mysql.user; 檢查殭屍賬號、過度授權validate_password 強制複雜度、過期輪換% 僅用於受信任內網段,生產外網嚴禁CREATE ROLE/GRANT TO ROLE/SET DEFAULT ROLE 統一管理權限集掌握三種管理方式,以 GRANT 為主、phpMyAdmin 輔、直操作表為應急/遷移,構建清晰、可審計、最小權限的資料庫安全防線。