前置條件
- MySQL
root 權限登入。
- Windows CMD / Linux Shell 均適用。
- 目標:用戶
phplamp,密碼 1234,資料庫 phplampDB。
一、創建用戶 (兩種方式)
方式 A:標準 SQL (兼容舊版)
mysql -u root -p
mysql> INSERT INTO mysql.user (Host, User, Password) VALUES ('localhost', 'phplamp', PASSWORD('1234'));
mysql> FLUSH PRIVILEGES;
方式 B:CREATE USER (MySQL 5.7+ 推薦,更安全)
mysql> CREATE USER 'phplamp'@'localhost' IDENTIFIED BY '1234';
驗證登入
mysql -u phplamp -p
Enter password: 1234
二、創建資料庫並授權
mysql> CREATE DATABASE phplampDB;
mysql> GRANT ALL PRIVILEGES ON phplampDB.* TO 'phplamp'@'localhost' IDENTIFIED BY '1234';
mysql> FLUSH PRIVILEGES;
三、權限精細控制語法
GRANT 權限列表 ON 資料庫.表 TO '用戶'@'主機' IDENTIFIED BY '密碼';
權限列表 (14 項核心)
| 權限 | 操作 |
| SELECT | 查詢 |
| INSERT | 插入 |
| UPDATE | 更新 |
| DELETE | 刪除 |
| CREATE | 建庫/表 |
| DROP | 刪庫/表 |
| INDEX | 索引管理 |
| ALTER | 修改結構 |
| GRANT OPTION | 授權他人 |
| REFERENCES | 外鍵 |
| RELOAD | FLUSH |
| SHUTDOWN | 關閉服務 |
| PROCESS | SHOW PROCESSLIST |
| FILE | LOAD DATA/INTO OUTFILE |
常用授權範例
-- 僅讀寫權限
GRANT SELECT, INSERT, UPDATE, DELETE ON phplampDB.* TO 'phplamp'@'localhost';
-- 特定表權限
GRANT SELECT, UPDATE ON phplampDB.orders TO 'phplamp'@'10.163.225.87' IDENTIFIED BY '123';
-- 全庫全表最高權限 (極謹慎)
GRANT ALL PRIVILEGES ON *.* TO 'admin'@'%' IDENTIFIED BY 'strong_pwd' WITH GRANT OPTION;
四、主機匹配規則詳解
| Host 值 | 匹配連接方式 | 備註 |
| localhost | Unix Socket / Named Pipe | 非 TCP/IP |
| 127.0.0.1 | TCP/IP 回環 | 與 localhost 不同賬號 |
| % | 任意主機 (遠程) | 含 localhost/127.0.0.1 |
| 192.168.1.% | 特定網段 | 通配符 |
| host.example.com | 域名解析 | 需 DNS 正確、skip_name_resolve=OFF |
五、常見維護操作
-- 修改密碼 (5.7+)
ALTER USER 'phplamp'@'localhost' IDENTIFIED BY 'newpass';
-- 或
SET PASSWORD FOR 'phplamp'@'localhost' = PASSWORD('newpass');
-- 撤銷權限
REVOKE INSERT ON phplampDB.* FROM 'phplamp'@'localhost';
-- 刪除用戶
DROP USER 'phplamp'@'localhost';
-- 查看權限
SHOW GRANTS FOR 'phplamp'@'localhost';
-- 查看所有用戶
SELECT User, Host FROM mysql.user;
六、安全最佳實踐
- 最小權限原則:業務賬號僅授必要庫表的 CRUD 權限。
- 禁用 root 遠程:
DELETE FROM mysql.user WHERE User='root' AND Host!='localhost'; FLUSH PRIVILEGES;
- 強密碼策略:安裝
validate_password 插件,強制長度、大小寫、數字、特殊字符。
- 定期審計:清理無用賬號、回收過期權限、審視
WITH GRANT OPTION 賬號。
- SSL 加密連接:生產環境強制
REQUIRE SSL,防中間人竊聽。