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

MySQL修改root默認密碼的四種實用方法

     編輯:MySQL 綜合教學

Windows安裝MySQL後root默認無密碼或隨機密碼,Linux安裝多為空密碼。生產上線前必須修改。本文匯總四種場景覆蓋率100%的修改方法。

方法一:SET PASSWORD語句(推薦,5.7.6+ / 8.0通用)

mysql -u root -p
# 輸入當前密碼(首次可能為空或隨機密碼)

-- 修改localhost
SET PASSWORD FOR 'root'@'localhost' = 'NewStrongPass@123';
-- 修改遠程% (可選)
SET PASSWORD FOR 'root'@'%' = 'NewStrongPass@123';

-- 8.0新語法(推薦)
ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewStrongPass@123';
ALTER USER 'root'@'%' IDENTIFIED BY 'NewStrongPass@123';

方法二:mysqladmin命令行工具(腳本自動化首選)

# 首次設置(無密碼)
mysqladmin -u root password 'NewStrongPass@123'

# 已有密碼修改
mysqladmin -u root -p'oldpass' password 'NewStrongPass@123'

# 批量修改多實例
for port in 3306 3307 3308; do
  mysqladmin -u root -P$port -p'oldpass' password 'NewStrongPass@123'
done

方法三:直接UPDATE user表(通用、需FLUSH PRIVILEGES)

mysql -u root -p
USE mysql;

-- 5.7及之前
UPDATE user SET Password = PASSWORD('NewStrongPass@123') WHERE User = 'root';
FLUSH PRIVILEGES;

-- 8.0+ (authentication_string字段)
UPDATE user SET authentication_string = PASSWORD('NewStrongPass@123') WHERE User = 'root';
-- 或推薦
UPDATE user SET authentication_string = '' WHERE User = 'root';  -- 置空
FLUSH PRIVILEGES;
-- 隨後用ALTER USER重新設置

方法四:忘記密碼/權限損壞 —— 跳過權限表重置

Linux系統

systemctl stop mysqld
mysqld_safe --skip-grant-tables --skip-networking &
mysql -u root
USE mysql;
-- 5.7
UPDATE user SET authentication_string=PASSWORD('NewPass@123') WHERE User='root';
-- 8.0
UPDATE user SET authentication_string='' WHERE User='root';
FLUSH PRIVILEGES;
EXIT;
pkill mysqld
systemctl start mysqld
# 登錄後再用ALTER USER正式設置密碼

Windows系統

# 1. 管理員CMD停止服務
net stop MySQL80

# 2. 跳過權限表啟動(新窗口保持運行)
mysqld --defaults-file="D:\mysql\my.ini" --skip-grant-tables --console

# 3. 另開管理員CMD免密登錄修改
mysql -u root
USE mysql;
UPDATE user SET authentication_string='' WHERE User='root';
FLUSH PRIVILEGES;
EXIT;

# 4. 關閉--skip-grant-tables窗口,正常啟動服務
net start MySQL80
# 登錄後ALTER USER設置正式密碼

生產環境密碼策略建議

  • 長度≥16位,含大小寫、數字、特殊字符
  • 定期輪換(建議90天)
  • 不同環境(開發/測試/預發/生產)隔離密碼
  • 使用密碼管理工具(Vault/Keepass/1Password)存儲
  • 禁用root遠程登錄,創建業務專用賬號最小權限授權

驗證:修改後立即mysql -u root -p'NewPass' -e "SELECT VERSION();"確認生效;檢查mysql.user表authentication_string非空。

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