萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 程式設計 >  >> 資料庫 >> MySQL 教學

MySQL 命令行修改密碼:mysqladmin 與 SET PASSWORD 詳解

MySQL 密碼修改完整指南:命令行與 SQL 多種方式

涵蓋 mysqladmin 工具、SQL 語句、MySQL 5.7/8.0 版本差異,適用於 root 與普通用戶密碼變更。

方法一:mysqladmin 工具 (命令行直接執行)

首次給 root 設定密碼

mysqladmin -u root password 'new_password'

修改已有密碼

mysqladmin -u root -p'old_password' password 'new_password'

參數說明

參數說明
-u用戶名
-p密碼 (緊跟無空格),單獨 -p 會提示輸入
password關鍵字,後接新密碼

方法二:MySQL 客戶端內部 SQL (需先登入)

MySQL 5.7 及之前版本

mysql -u root -p

UPDATE mysql.user 
SET password = PASSWORD('new_password') 
WHERE User = 'root';

FLUSH PRIVILEGES;

MySQL 5.7.6+ / 8.0 (password 欄位改為 authentication_string)

UPDATE mysql.user 
SET authentication_string = PASSWORD('new_password') 
WHERE User = 'root';

FLUSH PRIVILEGES;

MySQL 8.0 官方推薦語法

ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';

-- 或指定認證插件
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'new_password';

SET PASSWORD 語法 (5.7.6+)

SET PASSWORD FOR 'root'@'localhost' = PASSWORD('new_password');
-- 或 8.0
SET PASSWORD FOR 'root'@'localhost' = 'new_password';

方法三:跳過權限表緊急重置 (忘記密碼時用)

# 1. 停止服務
systemctl stop mysqld

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

# 3. 無密碼登入修改
mysql -u root
UPDATE mysql.user SET authentication_string = PASSWORD('new_password') WHERE User='root';
FLUSH PRIVILEGES;
EXIT;

# 4. 正常重啟
pkill mysqld
systemctl start mysqld

驗證修改結果

# 測試新密碼
mysql -u root -p'new_password' -e "SELECT USER(), CURRENT_USER();"

-- 輸出範例
+----------------+----------------+
| USER()         | CURRENT_USER() |
+----------------+----------------+
| root@localhost | root@localhost |
+----------------+----------------+

常見問題排查

現象原因解決
Rows matched: 0Host 不匹配 (如 'root'@'%' vs 'root'@'localhost')WHERE User='root' AND Host='localhost'
密碼不生效未執行 FLUSH PRIVILEGES必須刷新權限
Plugin 錯誤MySQL 8.0 預設 caching_sha2_password指定 mysql_native_password
Access denied舊密碼錯誤用 --skip-grant-tables 重置

最佳實踐建議

  • 生產環境使用 ALTER USER (8.0) 或 SET PASSWORD (5.7)
  • 密碼複雜度:≥12 字符、大小寫、數字、特殊符號
  • 定期輪換密碼,避免硬編碼在代碼/配置中
  • 重要修改前備份 mysql.user 表

根據 MySQL 版本與場景選擇適當方法,牢記 FLUSH PRIVILEGES 讓修改即時生效。

copyright © 萬盛學電腦網 all rights reserved