MySQL 帳號 = 用戶名 + 密碼 + 來源位置。同一用戶從不同來源連線,權限可完全不同。
GRANT SELECT ON db1.* TO 'abc'@'server1' IDENTIFIED BY 'pass1';
GRANT SELECT ON db2.* TO 'abc'@'server1' IDENTIFIED BY 'pass2';
用戶 abc 連 db1 用 pass1,連 db2 用 pass2,實現同帳號不同庫不同密碼。
mysql.user 表(用戶名/密碼/Host)mysql.db、mysql.tables_priv、mysql.columns_priv 判斷庫/表/欄位權限| 權限 | 功能 | 風險 |
|---|---|---|
| SELECT | 查詢資料 | 低 |
| INSERT | 新增資料 | 中 |
| UPDATE | 修改資料 | 中 |
| INDEX | 管理索引 | 中 |
| ALTER | 修改表結構 | 高 |
| CREATE | 建立庫/表 | 高 |
| GRANT | 授權他人 | 極高 |
| REFERENCES | 外鍵約束 | 中 |
| RELOAD | FLUSH 操作 | 高 |
| SHUTDOWN | 關閉服務 | 極高 |
| PROCESS | 查看/殺死進程 | 高 |
| FILE | LOAD DATA INFILE | 極高 |
LOAD DATA INFILE/SELECT ... INTO OUTFILE)mysqladmin shutdown生產環境嚴格控制上述四大權限,僅授予 DBA 核心帳號。
DELETE FROM mysql.user WHERE User='';RENAME USER 'root'@'%' TO 'root'@'localhost';DROP DATABASE test; DELETE FROM mysql.db WHERE Db LIKE 'test%';GRANT ... REQUIRE SSL;bind-address=10.0.0.10SHOW GRANTS 審核權限