首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL 修改用戶密碼 6 大方法:從 phpMyAdmin 到 SQL 命令全覆蓋

     編輯:MySQL 資料庫相關知識

前置條件

需具備 mysql 系統庫寫入權限(通常需 root 或含 UPDATE 權限的管理帳號)。

方法對比表

方法工具/命令需 FLUSH PRIVILEGES適用場景
1. 圖形化phpMyAdmin → mysql.user 表編輯否(自動處理)新手、可視化操作
2. 客戶端工具mysqladmin -u root -p password 'newpass'否命令列快速改密、腳本自動化
3. INSERTINSERT INTO mysql.user (Host,User,Password) VALUES('%','jeffrey',PASSWORD('biscuit')); FLUSH PRIVILEGES;是建立新用戶並設密
4. REPLACEREPLACE INTO mysql.user ... + FLUSH是用戶不存在則建立,存在則更新
5. SET PASSWORDSET PASSWORD FOR 'jeffrey'@'%' = PASSWORD('biscuit');否✅ 推薦:標準 SQL、自動刷新、語義清晰
6. GRANTGRANT USAGE ON *.* TO 'jeffrey'@'%' IDENTIFIED BY 'biscuit';否同時授權與設密、無需 PASSWORD()

關鍵細節

  • PASSWORD() 函數: MySQL 內部雜湊算法,**非**系統密碼雜湊,**不可**用於應用層密碼存儲。
  • FLUSH PRIVILEGES: 直接操作 mysql.user 表(INSERT/REPLACE/UPDATE)後必須執行,使權限緩存失效重載。
  • 清空密碼: mysqladmin 無法設空密碼;用 SET PASSWORD FOR 'user'@'host' = ''; 或 GRANT ... IDENTIFIED BY '';。
  • 遠程 root 禁用: 生產環境建議僅保留 'root'@'localhost',刪除 'root'@'%'。

緊急重置 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

最佳實踐建議

  1. 日常管理用 方法 5 (SET PASSWORD) 或 方法 6 (GRANT),語義明確、無需手動刷新。
  2. 自動化腳本用 方法 2 (mysqladmin),非交互式友好。
  3. 定期審計 mysql.user:移除匿名用戶、弱密碼帳號、過度授權帳號。
  4. 應用帳號**嚴禁使用 root**,建立專用帳號 + 最小權限 + 強密碼。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved