MySQL 8.0 前雖可直接操作 mysql.user 表,但官方推薦使用 DDL 語句(CREATE USER/GRANT/ALTER USER/DROP USER),兼容性更好、權限刷新自動化。本文匯總全版本通用的標準操作模板。
-- 8.0+ 推薦語法
CREATE USER 'test'@'localhost' IDENTIFIED BY '1234';
CREATE USER 'test'@'%' IDENTIFIED BY '1234'; -- 允許遠程
-- 5.7 兼容語法(仍可用)
CREATE USER 'test'@'localhost' IDENTIFIED WITH mysql_native_password BY '1234';
Host 語義:localhost 僅本地 Unix Socket;127.0.0.1 本地 TCP;% 任意主機;192.168.1.% 網段。
GRANT ALL PRIVILEGES ON testDB.* TO 'test'@'localhost' IDENTIFIED BY '1234';
-- 8.0 需分兩步:CREATE USER → GRANT(不再支援 GRANT 隱式建用戶)
GRANT SELECT, INSERT, UPDATE ON testDB.* TO 'test'@'localhost';
GRANT SELECT, DELETE, UPDATE, CREATE, DROP ON *.* TO 'test'@'%' IDENTIFIED BY '1234';
FLUSH PRIVILEGES; -- 8.0 通常自動生效,保留兼容習慣
SHOW GRANTS FOR 'test'@'localhost';
SHOW GRANTS FOR 'test'@'%';
-- 8.0+
ALTER USER 'test'@'localhost' IDENTIFIED BY 'new_password';
-- 5.7
SET PASSWORD FOR 'test'@'localhost' = PASSWORD('new_password');
-- 通用(直接操作 user 表,不推薦)
UPDATE mysql.user SET authentication_string=PASSWORD('new_password') WHERE User='test' AND Host='localhost';
FLUSH PRIVILEGES;
-- 8.0+ 推薦
DROP USER 'test'@'localhost';
DROP USER 'test'@'%';
-- 5.7 兼容
DELETE FROM mysql.user WHERE User='test' AND Host='localhost';
FLUSH PRIVILEGES;
-- 同步刪除其專屬數據庫
DROP DATABASE testDB;
| 操作 | 命令 |
|---|---|
| 列出所有庫 | SHOW DATABASES; |
| 切換庫 | USE db_name; |
| 列出所有表 | SHOW TABLES; |
| 表結構 | DESC table_name; / SHOW CREATE TABLE table_name; |
| 刪除庫 | DROP DATABASE db_name; |
| 刪除表 | DROP TABLE table_name; |
| 查看進程 | SHOW PROCESSLIST; |
| 殺死進程 | KILL connection_id; |
| 查看變量 | SHOW VARIABLES LIKE 'xxx'; |
| 查看狀態 | SHOW GLOBAL STATUS LIKE 'xxx'; |
SELECT/INSERT/UPDATE/DELETE,禁止 DROP/ALTER/CREATEGRANT SELECT ON db.* TO 'readonly'@'%'RELOAD, REPLICATION CLIENT, PROCESS, SHOW DATABASES, SUPERSELECT user, host FROM mysql.user; 清理無用/弱密碼賬號validate_password 插件 + 定期輪換