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

MySQL 修改 root 密碼全版本通用指南

     編輯:MySQL 資料庫相關知識

版本差異核心結論

通用標準語法(5.7+ 推薦)

方法一:ALTER USER(最標準、支持插件指定)

-- 登錄
mysql -u root -p

-- 修改密碼(默認插件)
ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewStrongPass123!';

-- 指定插件(兼容老客戶端)
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'NewStrongPass123!';

-- 刷新權限
FLUSH PRIVILEGES;

方法二:SET PASSWORD(簡潔)

SET PASSWORD FOR 'root'@'localhost' = 'NewStrongPass123!';
-- 等價於
SET PASSWORD = 'NewStrongPass123!';  -- 當前用戶

方法三:UPDATE user 表(5.6 兼容、不推薦新版用)

USE mysql;
UPDATE user SET authentication_string = PASSWORD('NewStrongPass123!') WHERE User = 'root';
FLUSH PRIVILEGES;

忘記 root 密碼緊急重置(跳過授權表啟動)

# 1. 停止服務
systemctl stop mysqld

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

# 3. 無密碼登錄修改
mysql -u root
FLUSH PRIVILEGES;  -- 5.7+ 必須先執行
ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewPass123!';

# 4. 正常重啟
mysqladmin shutdown
systemctl start mysqld

Windows:命令行 mysqld --skip-grant-tables --skip-networking,另開窗口執行修改。

密碼策略與驗證

-- 查看密碼策略
SHOW VARIABLES LIKE 'validate_password%';

-- 臨時降低策略(便於測試)
SET GLOBAL validate_password.policy = LOW;
SET GLOBAL validate_password.length = 4;

-- 生產環境建議
validate_password.policy = STRONG
validate_password.length = 16
validate_password.mixed_case_count = 1
validate_password.number_count = 1
validate_password.special_char_count = 1

多宿主 root 賬號批量修改

-- 查看所有 root 賬號
SELECT User, Host, plugin FROM mysql.user WHERE User = 'root';

-- 逐個修改(建議統一插件)
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'Pass123!';
ALTER USER 'root'@'127.0.0.1' IDENTIFIED WITH mysql_native_password BY 'Pass123!';
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'Pass123!';
FLUSH PRIVILEGES;

客戶端連接驗證

# 命令行驗證
mysql -u root -p'NewPass123!' -e "SELECT VERSION();"

# JDBC 驗證
jdbc:mysql://host:3306/db?user=root&password=NewPass123!&useSSL=false

# 應用配置同步修改(Spring Boot 示例)
spring:
  datasource:
    username: root
    password: NewPass123!  # 必須同步更新,否則啟動失敗

避坑清單

  1. FLUSH PRIVILEGES:UPDATE user 表後必須執行;ALTER USER/SET PASSWORD 內部已隱式刷新
  2. 插件兼容:8.0 默認 caching_sha2_password,舊版 PHP/JDBC 需指定 mysql_native_password
  3. 特殊字符轉義:Shell 中單引號包裹密碼,避免 ! $ 等被解析
  4. 主從環境:主庫修改後,從庫 CHANGE MASTER TO MASTER_PASSWORD='new' 並 STOP/START SLAVE
  5. 應用重啟:密碼修改後,所有連接池需重建,建議滾動重啟應用

掌握版本差異、標準語法、緊急重置、密碼策略、批量修改、驗證與避坑,即可從容應對所有 MySQL root 密碼管理場景。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
MySQL 版本user 表密碼列推薦修改方式
5.6 及之前passwordUPDATE user SET Password=PASSWORD('new')
5.7authentication_stringALTER USER / SET PASSWORD
8.0+authentication_stringALTER USER / SET PASSWORD(默認 caching_sha2_password)