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

MySQL 密碼管理完整指南:設定、修改、遺忘 root 密碼重置

     編輯:MySQL 資料庫相關知識

MySQL 密碼體系特性

  • 用戶名長度 16 字元(OS 通常 8 字元)。
  • 密碼與 OS 登入密碼無關,獨立加密演算法。
  • 預設匿名用戶無密碼,極度不安全,必須全數設定密碼或刪除。

方法一:mysqladmin(需知舊密碼)

# 首次設定 root 密碼
mysqladmin -u root password 'newpass'

# 變更密碼
mysqladmin -u root -p'oldpass' password 'newpass'

# 遠端主機
mysqladmin -h host -u root -p'oldpass' password 'newpass'

方法二:SET PASSWORD(客戶端內部,需知舊密碼或有權限)

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

-- 修改指定用戶(需 mysql 資料庫權限)
SET PASSWORD FOR 'user'@'host' = PASSWORD('newpass');

方法三:直接更新 user 表(需 mysql 資料庫權限)

USE mysql;
UPDATE user SET authentication_string=PASSWORD('newpass') WHERE User='root' AND Host='localhost';
FLUSH PRIVILEGES;

MySQL 5.7+ 欄位為 authentication_string,5.6 為 password。

核心場景:遺忘 root 密碼重置

步驟 1:停止 MySQL 服務

# Linux
kill `cat /var/lib/mysql/hostname.pid`
# 或 systemctl stop mysqld

# Windows
net stop mysql

步驟 2:跳過授權表啟動

# Linux
mysqld_safe --skip-grant-tables --skip-networking &

# Windows
mysqld --skip-grant-tables --skip-networking

--skip-networking 防止外部連入,安全第一。

步驟 3:無密碼登入並修改

mysql -u root
-- 進入後
USE mysql;
UPDATE user SET authentication_string=PASSWORD('newpass') WHERE User='root';
FLUSH PRIVILEGES;

步驟 4:重新正常啟動

# 關閉 skip-grant-tables 進程
mysqladmin -u root -p'newpass' shutdown
# 正常啟動
systemctl start mysqld
# 或 mysqld_safe &

常見坑點

問題解決
修改後仍無法登入確認 Host 欄位匹配(localhost vs 127.0.0.1 vs %),逐個更新
Windows 服務無法停止工作管理員結束 mysqld.exe 進程
FLUSH PRIVILEGES 報錯確保在 mysql 資料庫下執行
MySQL 8.0 caching_sha2_password用 ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'newpass';

最佳實踐

  1. 安裝完成立即設定 root 強密碼。
  2. 刪除匿名用戶:DELETE FROM mysql.user WHERE User='';
  3. 3. 禁止 root 遠端登入:UPDATE mysql.user SET Host='localhost' WHERE User='root'; 4. 定期輪換密碼,納入密碼管理工具。 5. 重要環境啟用 validate_password 元件強制複雜度。

掌握以上方法,無論是日常修改還是緊急重置 root 密碼,都能從容應對。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved