最小權限原則是資料庫安全基石。本文系統整理 GRANT 語法、權限分類對照表、phpMyAdmin 圖形化操作流程與 FLUSH PRIVILEGES 重新載入機制。
GRANT privileges [(columns)] ON db.table TO 'user'@'host' IDENTIFIED BY 'password' [WITH GRANT OPTION];
| 類別 | 權限 | 說明 |
|---|---|---|
| 資料操作 (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 | 執行預存程序 | |
| 管理權限 | SUPER | 超級權限(KILL、SET GLOBAL、CHANGE MASTER 等) |
| RELOAD | FLUSH 操作 | |
| SHUTDOWN | 關閉服務器 | |
| PROCESS | SHOW PROCESSLIST | |
| REPLICATION SLAVE | 從庫同步權限 | |
| REPLICATION CLIENT | SHOW MASTER/SLAVE STATUS |
CREATE USER 'readonly'@'%' IDENTIFIED BY 'strong_pass';
GRANT SELECT ON `prod_db`.* TO 'readonly'@'%';
CREATE USER 'dev'@'10.0.%' IDENTIFIED BY 'strong_pass';
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, ALTER, INDEX ON `dev_db`.* TO 'dev'@'10.0.%';
CREATE USER 'admin'@'10.0.0.10' IDENTIFIED BY 'strong_pass';
GRANT ALL PRIVILEGES ON *.* TO 'admin'@'10.0.0.10' WITH GRANT OPTION;
FLUSH PRIVILEGES)
-- 修改密碼(5.7.6+)
ALTER USER 'user'@'host' IDENTIFIED BY 'new_pass';
-- 修改密碼(舊版)
SET PASSWORD FOR 'user'@'host' = PASSWORD('new_pass');
-- 刪除用戶
DROP USER 'user'@'host';
-- 重命名用戶
RENAME USER 'old'@'host' TO 'new'@'host';
SHOW GRANTS FOR 'user'@'host';
-- 輸出可直接作為備份/遷移腳本
GRANT 若用戶不存在會隱式建立(舊版行為),新版需先 CREATE USERIDENTIFIED BY 密碼需用雙引號或無引號,單引號在某些版本無效FLUSH PRIVILEGES(phpMyAdmin 點「重新載入權限」)'%' 主機通配,改用具體網段 '10.0.%'SELECT * FROM mysql.user 移除殭屍帳號建立「角色基礎權限集 → 依專案分配 → 定期審計」的權限治理體系,是資料庫安全的長久之計。