首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL 修改 root 密碼六大方法全解析:從 phpMyAdmin 到 SQL 命令行

     編輯:MySQL 綜合教學

MySQL 修改 root 密碼六大方法全解析:從 phpMyAdmin 到 SQL 命令行

MySQL 修改 root 密碼的方式隨版本演進 (5.7/8.0 authentication_string 替代 password 列),本文彙總六種經典方法,覆蓋圖形化工具、命令行工具、SQL 語句、緊急跳過授權表模式,附版本差異提示。

方法一:phpMyAdmin / 圖形化工具 (最直觀)

  1. 登錄 phpMyAdmin,選擇 mysql 數據庫 → user 表。
  2. 編輯 root 用戶行,authentication_string (或 5.6 Password) 列選擇 PASSWORD() 函數,輸入新密碼。
  3. 執行保存,隨後 FLUSH PRIVILEGES;。

適用:有 Web 管理介面、不熟悉命令行的場景。

方法二:mysqladmin 命令行工具 (專用修改密碼)

# 修改 root 密碼為 new_pass (需輸入舊密碼)
mysqladmin -u root -p password 'new_pass'

# 修改其他用戶
mysqladmin -u user_name -p password 'new_pass'

# 限制:無法將密碼設為空串;需網絡通暢且 mysqladmin 可連接服務器

方法三:INSERT + FLUSH PRIVILEGES (創建用戶並設密碼)

INSERT INTO mysql.user (Host, User, authentication_string)
VALUES ('%', 'jeffrey', PASSWORD('biscuit'));
FLUSH PRIVILEGES;

注意:PASSWORD() 加密不可逆,MySQL 8.0 建議用 CREATE USER ... IDENTIFIED BY 替代直接操作系統表。

方法四:REPLACE INTO (覆蓋式創建/更新)

REPLACE INTO mysql.user (Host, User, authentication_string)
VALUES ('%', 'jeffrey', PASSWORD('biscuit'));
FLUSH PRIVILEGES;

若用戶存在則更新,不存在則插入。同樣需 FLUSH PRIVILEGES。

方法五:SET PASSWORD 语句 (標準 SQL 方式)

-- MySQL 5.7/8.0
SET PASSWORD FOR 'jeffrey'@'%' = 'new_password';  -- 明文,服務端自動加密

-- MySQL 5.6 (需 PASSWORD())
SET PASSWORD FOR 'jeffrey'@'%' = PASSWORD('new_password');

優勢:無需 FLUSH PRIVILEGES,即時生效;語法標準、可讀性強。

方法六:GRANT ... IDENTIFIED BY (授權同時設密碼)

GRANT USAGE ON *.* TO 'jeffrey'@'%' IDENTIFIED BY 'new_password';

特點:PASSWORD() 不需手動調用,無需 FLUSH PRIVILEGES。USAGE 僅修改密碼不授予實質權限。

緊急模式:跳過授權表重置 root 密碼 (忘記密碼終極方案)

# 1. 停止服務
systemctl stop mysqld

# 2. 啟動跳過授權表模式
mysqld_safe --skip-grant-tables --skip-networking &

# 3. 無密碼登錄
mysql -uroot

# 4. 修改密碼 (MySQL 5.7/8.0)
USE mysql;
UPDATE user SET authentication_string = PASSWORD('new_pass') WHERE User='root' AND Host='localhost';
FLUSH PRIVILEGES;

# 5. 正常重啟
systemctl restart mysqld

版本差異關鍵提示

版本密碼列名推薦修改方式
5.6PasswordSET PASSWORD ... = PASSWORD() / GRANT ... IDENTIFIED BY
5.7authentication_stringSET PASSWORD ... = 'plain' / ALTER USER ... IDENTIFIED BY
8.0authentication_stringALTER USER 'root'@'localhost' IDENTIFIED BY 'new_pass'; (最標準)

安全建議

  1. 密碼複雜度:≥12 位,含大小寫、數字、特殊字符。
  2. 禁用 root 遠程:DELETE FROM mysql.user WHERE User='root' AND Host='%'; FLUSH PRIVILEGES;
  3. 定期輪換:每 90 天變更,配合密碼策略插件 validate_password 強制執行。
  4. 應用層配置同步:修改密碼後務必同步更新應用配置文件/配置中心,避免服務啟動失敗。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved