MySQL 權限系統基於「使用者@主機」模型,精細控制存取層級。本文匯整建立使用者、授權、改密、回收、刪除的標準語法與實戰注意事項。
CREATE USER 'username'@'host' IDENTIFIED BY 'password';
host:localhost(本機)、192.168.1.%(IP 段)、%(任意遠端)GRANT privileges ON db.table TO 'username'@'host' [WITH GRANT OPTION];
privileges:SELECT, INSERT, UPDATE... 或 ALLdb.table:*.* 表示所有庫所有表WITH GRANT OPTION:允許該使用者再授權他人-- 指定使用者
SET PASSWORD FOR 'username'@'host' = PASSWORD('newpass');
-- 當前登入使用者
SET PASSWORD = PASSWORD('newpass');
REVOKE privilege ON db.table FROM 'username'@'host';
關鍵陷阱:授權與回收的層級必須精確對應。若授權為 GRANT SELECT ON test.user TO 'pig'@'%',則 REVOKE SELECT ON *.* FROM 'pig'@'%' 無效;必須對應 REVOKE SELECT ON test.user FROM 'pig'@'%'。查看實際權限請用:
SHOW GRANTS FOR 'username'@'host';
DROP USER 'username'@'host';
| 權限 | 說明 |
|---|---|
| ALTER | 允許 ALTER TABLE |
| CREATE | 允許 CREATE TABLE |
| DROP | 允許 DROP TABLE |
| INDEX | 允許建立/刪除索引 |
| FILE | 允許 SELECT ... INTO OUTFILE、LOAD DATA INFILE |
| PROCESS | 允許 SHOW FULL PROCESSLIST |
| RELOAD | 允許 FLUSH 操作 |
| SHUTDOWN | 允許 mysqladmin shutdown |
| SUPER | 允許 CHANGE MASTER、KILL、全域變數設定等 |
| USAGE | 僅允許連線,無實質權限 |
SHOW GRANTS 審計權限異動mysql_secure_installation 清理預設匿名帳號與測試庫