# 首次登錄(無密碼)
mysql -u root
# 設置/修改 root 密碼
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('StrongP@ssw0rd!');
FLUSH PRIVILEGES;
MySQL 5.7.6+ / 8.0 推薦語法:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'StrongP@ssw0rd!';
-- 1. 創建用戶(指定主機限制)
CREATE USER 'app_user'@'10.0.1.%' IDENTIFIED BY 'AppP@ssw0rd!';
-- 2. 僅授予必要權限(業務庫讀寫)
GRANT SELECT, INSERT, UPDATE, DELETE, EXECUTE
ON `prod_db`.*
TO 'app_user'@'10.0.1.%';
-- 3. 禁止 DDL、管理權限
-- REVOKE CREATE, DROP, ALTER, GRANT OPTION ... (默認無)
-- 4. 生效
FLUSH PRIVILEGES;
| 權限 | 說明 | 業務用戶 | 管理用戶 |
|---|---|---|---|
| SELECT | 查詢 | ✅ | ✅ |
| INSERT/UPDATE/DELETE | 增刪改 | ✅ | ✅ |
| EXECUTE | 存儲過程/函數 | 視需求 | ✅ |
| CREATE/DROP/ALTER | DDL | ❌ | ✅ |
| GRANT OPTION | 授權他人 | ❌ | ✅ |
| SUPER/PROCESS/SHUTDOWN | 實例級管理 | ❌ | 極少授予 |
| FILE | LOAD DATA INFILE | ❌ | 極少授予 |
-- 查看用戶權限
SHOW GRANTS FOR 'app_user'@'10.0.1.%';
-- 回收權限
REVOKE INSERT ON `prod_db`.* FROM 'app_user'@'10.0.1.%';
-- 刪除用戶
DROP USER 'old_user'@'%';
-- 修改密碼
ALTER USER 'app_user'@'10.0.1.%' IDENTIFIED BY 'NewP@ssw0rd!';
DROP USER ''@'localhost';UPDATE mysql.user SET Host='localhost' WHERE User='root';DROP DATABASE test;validate_password 插件強制強密碼策略max_user_connections 防單用戶佔滿連接