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

MySQL 密碼管理完整手冊:設置、修改、重置 Root 密碼全流程

     編輯:MySQL 資料庫相關知識

MySQL 密碼體系特點

  • 用戶名長度 16 字符(Unix 通常 8 字符),與作業系統用戶名無關。
  • 密碼加密演算法與 Unix `crypt()` 不同,雙體系獨立。
  • 預設匿名用戶無密碼,極度不安全,必須全量設置密碼。

三種修改密碼方式

1. `mysqladmin` 命令列工具(需知舊密碼)

# 有舊密碼
mysqladmin -u user -p password "newpass"
# 初始無密碼 root
mysqladmin -u root password "newpass"

2. SQL `SET PASSWORD` 語句(靈活、不需舊密碼前提是有權限)

-- 修改當前用戶密碼
SET PASSWORD = PASSWORD('newpass');

-- 修改指定用戶(需 mysql 資料庫權限)
SET PASSWORD FOR 'bob'@'%.loc.gov' = PASSWORD('newpass');

3. 直接更新 `mysql.user` 表(需 reload 權限)

UPDATE mysql.user SET Password = PASSWORD('newpass') WHERE User='bob' AND Host='%.loc.gov';
FLUSH PRIVILEGES;

緊急重置 Root 密碼(遺忘情況)

  1. 關閉服務:`kill \`cat /datadir/hostname.pid\``(非 `kill -9`),或 Windows `net stop MySQL`。
  2. 跳過授權表啟動:
    # Unix
    su - mysql
    mysqld_safe --skip-grant-tables &
    
    # Windows
    mysqld --skip-grant-tables
  3. 無密碼登入修改:
    mysql -h localhost mysql
    UPDATE user SET Password = PASSWORD('newpass') WHERE User='root';
    FLUSH PRIVILEGES;
    或用 `GRANT ALL ON *.* TO 'root'@'localhost' IDENTIFIED BY 'newpass' WITH GRANT OPTION;`
  4. 重新載入權限/重啟正常服務:`mysqladmin flush-privileges` 或重啟 `mysqld`。

注意事項

  • `mysqladmin password` 修改的是「客戶端連接的主機匹配用戶」,本機連線改 `root@localhost`,遠程改 `root@%`,需分別執行。
  • MySQL 5.7+ `Password` 欄位更名為 `authentication_string`,語法微調,原理相同。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved