MySQL 5.7+ 推薦使用 CREATE USER + GRANT 分離語法,本文匯總創建用戶、授權、修改密碼、回收權限、刪除用戶的標準化操作模板。
CREATE USER 'username'@'host' IDENTIFIED BY 'password';
-- host: % (任意IP), localhost, 192.168.1.% (通配符), 具體IP
-- 全庫全表所有權限(慎用)
GRANT ALL PRIVILEGES ON *.* TO 'username'@'host' WITH GRANT OPTION;
-- 指定庫所有權限
GRANT ALL PRIVILEGES ON dbname.* TO 'username'@'host';
-- 指定庫表精細權限
GRANT SELECT, INSERT, UPDATE, DELETE ON dbname.tbl_name TO 'username'@'host';
-- 僅讀權限
GRANT SELECT ON dbname.* TO 'username'@'host';
FLUSH PRIVILEGES;
-- 5.7+ (推薦)
ALTER USER 'username'@'host' IDENTIFIED BY 'new_password';
-- 5.6 兼容
SET PASSWORD FOR 'username'@'host' = PASSWORD('new_password');
-- 或
UPDATE mysql.user SET authentication_string=PASSWORD('new_password') WHERE User='username' AND Host='host';
FLUSH PRIVILEGES;
REVOKE INSERT, UPDATE ON dbname.* FROM 'username'@'host';
REVOKE ALL PRIVILEGES ON *.* FROM 'username'@'host';
DROP USER 'username'@'host';
SHOW GRANTS FOR 'username'@'host';
| 層級 | 語法 | 適用對象 |
|---|---|---|
| 全域 | ON *.* | 所有庫所有表,含系統庫 |
| 庫級 | ON dbname.* | 指定庫下所有表 |
| 表級 | ON dbname.tbl_name | 指定表 |
| 列級 | GRANT SELECT(col1,col2) ON dbname.tbl_name ... | 指定列(極少用) |
ALL PRIVILEGES:除 GRANT OPTION 外所有權限SELECT/INSERT/UPDATE/DELETE:基礎 DMLCREATE/DROP/ALTER/INDEX:DDL 結構變更EXECUTE:存儲過程/函數執行CREATE VIEW/SHOW VIEW:視圖操作CREATE ROUTINE/ALTER ROUTINE:存儲程序管理TRIGGER:觸發器操作REFERENCES:外鍵創建LOCK TABLES:顯式鎖表RELOAD/SHUTDOWN/PROCESS/SUPER:管理員權限(極度受限)ALL ON *.*。192.168.1.%),避免 %。SELECT User, Host FROM mysql.user; 掃描無用/過期賬號並清理。