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

MySQL 修改密碼三大標準方法與 Root 密碼遺忘重置全流程

     編輯:MySQL 資料庫相關知識

MySQL 密碼管理是 DBA 基礎技能。本文匯總三種標準修改密碼方法,並詳細記錄 Root 密碼遺忘時的緊急重置流程(含 skip-grant-tables 模式),經多版本驗證可靠。

一、三種標準修改密碼方法(需登入權限)

方法 1:SET PASSWORD 語句(推薦,支援當前會話即時生效)

mysql -u root -p
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpass');

MySQL 5.7+ 建議使用 ALTER USER 'root'@'localhost' IDENTIFIED BY 'newpass';

方法 2:mysqladmin 命令列工具(適合腳本自動化)

# 首次設定或已知舊密碼
mysqladmin -u root password "newpass"

# 已有密碼時修改
mysqladmin -u root -p'oldpass' password "newpass"

方法 3:直接更新 mysql.user 表(最底層,需 FLUSH PRIVILEGES)

mysql -u root -p
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:修改配置檔啟用跳過權限表模式

vi /etc/my.cnf
# 在 [mysqld] 區段新增
skip-grant-tables

步驟 2:重啟 MySQL 服務

systemctl restart mysqld
# 或 service mysqld restart

步驟 3:無密碼登入並重置密碼

mysql -u root
USE mysql;
# MySQL 5.7+
UPDATE user SET authentication_string = PASSWORD('newpass') WHERE User = 'root';
# MySQL 5.6-
UPDATE user SET Password = PASSWORD('newpass') WHERE User = 'root';
FLUSH PRIVILEGES;
EXIT;

步驟 4:恢復配置並重啟驗證

vi /etc/my.cnf
# 刪除或註釋 skip-grant-tables
systemctl restart mysqld
mysql -u root -p'newpass' -e "SELECT 1;"  # 驗證新密碼生效

三、安全性關鍵提醒

  • skip-grant-tables 期間資料庫完全無認證保護:務必在安全網路環境操作,建議同時配置 bind-address=127.0.0.1 限制本地訪問,操作完成立即恢復。
  • 生產環境嚴禁空密碼:重置後必須設置強密碼(≥12 位、含大小寫數字特殊字元)。
  • 權限最小化:應用帳號僅授予必要庫表權限,避免使用 root 直連業務。
  • 定期輪換:建立密碼輪換機制,配合密碼管理工具儲存。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved