需具備 mysql 系統庫寫入權限(通常需 root 或含 UPDATE 權限的管理帳號)。
| 方法 | 工具/命令 | 需 FLUSH PRIVILEGES | 適用場景 |
|---|---|---|---|
| 1. 圖形化 | phpMyAdmin → mysql.user 表編輯 | 否(自動處理) | 新手、可視化操作 |
| 2. 客戶端工具 | mysqladmin -u root -p password 'newpass' | 否 | 命令列快速改密、腳本自動化 |
| 3. INSERT | INSERT INTO mysql.user (Host,User,Password) VALUES('%','jeffrey',PASSWORD('biscuit')); FLUSH PRIVILEGES; | 是 | 建立新用戶並設密 |
| 4. REPLACE | REPLACE INTO mysql.user ... + FLUSH | 是 | 用戶不存在則建立,存在則更新 |
| 5. SET PASSWORD | SET PASSWORD FOR 'jeffrey'@'%' = PASSWORD('biscuit'); | 否 | ✅ 推薦:標準 SQL、自動刷新、語義清晰 |
| 6. GRANT | GRANT USAGE ON *.* TO 'jeffrey'@'%' IDENTIFIED BY 'biscuit'; | 否 | 同時授權與設密、無需 PASSWORD() |
mysql.user 表(INSERT/REPLACE/UPDATE)後必須執行,使權限緩存失效重載。mysqladmin 無法設空密碼;用 SET PASSWORD FOR 'user'@'host' = ''; 或 GRANT ... IDENTIFIED BY '';。'root'@'localhost',刪除 'root'@'%'。# 1. 停止服務
net stop mysql
# 2. 跳過授權啟動
mysqld --skip-grant-tables &
# 3. 免密登入修改
mysql -u root mysql
UPDATE user SET Password=PASSWORD('newpass') WHERE User='root';
FLUSH PRIVILEGES;
# 4. 正常重啟
net stop mysql && net start mysql
mysql.user:移除匿名用戶、弱密碼帳號、過度授權帳號。