本文系統整理 MySQL 使用者帳號全生命週期管理指令,包含建立、授權、密碼變更、權限回收、刪除帳號,並附上完整權限項目對照表,適合 DBA 速查與自動化腳本參考。
CREATE USER 'username'@'host' IDENTIFIED BY 'password';
username:使用者名稱host:允許連線來源。localhost(本機)、192.168.1.101(特定 IP)、%(任意遠端)password:密碼,可為空(不建議)-- 本機帳號 CREATE USER 'dog'@'localhost' IDENTIFIED BY '123456'; -- 特定 IP CREATE USER 'pig'@'192.168.1.101' IDENTIFIED BY '123456'; -- 任意遠端 CREATE USER 'pig'@'%' IDENTIFIED BY '123456'; -- 無密碼(不推薦) CREATE USER 'pig'@'%' IDENTIFIED BY ''; CREATE USER 'pig'@'%';
GRANT privileges ON databasename.tablename TO 'username'@'host';
privileges:SELECT, INSERT, UPDATE, ALL 等databasename.tablename:*.* 代表所有庫所有表GRANT SELECT, INSERT ON test.user TO 'pig'@'%'; GRANT ALL ON *.* TO 'pig'@'%';
GRANT privileges ON databasename.tablename TO 'username'@'host' WITH GRANT OPTION;
SET PASSWORD FOR 'username'@'host' = PASSWORD('newpassword');
-- 當前登入使用者
SET PASSWORD = PASSWORD('newpassword');
SET PASSWORD FOR 'pig'@'%' = PASSWORD('123456');
REVOKE privilege ON databasename.tablename FROM 'username'@'host';
REVOKE SELECT ON *.* FROM 'pig'@'%';
注意:授權粒度與回收粒度必須一致。若授權為 GRANT SELECT ON test.user,則 REVOKE SELECT ON *.* 無法移除該權限;需精確指定 REVOKE SELECT ON test.user。可用 SHOW GRANTS FOR 'pig'@'%'; 查看實際權限。
DROP USER 'username'@'host';
| 權限 | 說明 |
|---|---|
| ALTER | 允許 ALTER TABLE |
| ALTER ROUTINE | 修改/刪除預存程序 |
| CREATE | 允許 CREATE TABLE |
| CREATE ROUTINE | 建立預存程序 |
| CREATE TEMPORARY TABLE | 允許建立臨時表 |
| CREATE USER | 允許 CREATE/DROP/RENAME USER, REVOKE ALL PRIVILEGES |
| CREATE VIEW | 允許建立視圖 |
| DELETE | 允許 DELETE |
| DROP | 允許 DROP TABLE |
| EXECUTE | 執行預存程序 |
| FILE | 允許 SELECT ... INTO OUTFILE, LOAD DATA INFILE |
| INDEX | 允許 CREATE/DROP INDEX |
| INSERT | 允許 INSERT |
| LOCK TABLES | 允許鎖表(需配合 SELECT) |
| PROCESS | 允許 SHOW FULL PROCESSLIST |
| RELOAD | 允許 FLUSH |
| REPLICATION CLIENT | 查詢主/從伺服器位置 |
| REPLICATION SLAVE | 複寫從庫所需 |
| SELECT | 允許 SELECT |
| SHOW DATABASES | 允許 SHOW DATABASES |
| SHOW VIEW | 允許 SHOW CREATE VIEW |
| SHUTDOWN | 允許 mysqladmin shutdown |
| SUPER | CHANGE MASTER, KILL, PURGE MASTER LOGS, SET GLOBAL, mysqladmin debug, 額外連線 |
| UPDATE | 允許 UPDATE |
| USAGE | 僅允許連線,無實質權限 |
SELECT/INSERT/UPDATE/DELETE。r_ 前綴唯讀、w_ 前綴讀寫)。mysql.user 與 information_schema.user_privileges,清理僵屍帳號。% 萬用字元帳號(改用具體 IP 或 VPN 網段)。