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

MySQL修改root密碼四大方法全攻略(含忘記密碼急救)

     編輯:MySQL 資料庫相關知識

MySQL root密碼修改是運維高頻操作。本文匯總四大標準方法,覆蓋正常修改、命令行工具、直接改表、忘記密碼跳過授權表四大場景,附Windows/Linux通用步驟。

方法一:SET PASSWORD 命令(需登入)

mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpass');
-- 或 8.0+ 推薦
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'newpass';

方法二:mysqladmin 命令行工具(無需進入SQL)

mysqladmin -u root -p'oldpass' password 'newpass'
# 例:mysqladmin -u root -p123456 password 123

注意:舊密碼緊跟-p無空格;特殊字符需轉義或用配置文件。

方法三:UPDATE user 表直改(需登入)

mysql> USE mysql;
mysql> UPDATE user SET authentication_string = PASSWORD('newpass') 
       WHERE User = 'root' AND Host = 'localhost';
mysql> FLUSH PRIVILEGES;

版本差異:5.7欄位為authentication_string,5.6為password,8.0+建議用ALTER USER。

方法四:忘記密碼急救——跳過授權表啟動(核心技能)

Windows 步驟

  1. 停止服務:net stop mysql
  2. 跳過授權啟動:mysqld --skip-grant-tables --console(新開CMD窗口,保持運行)
  3. 新開CMD免密登入:mysql -u root
  4. 修改密碼:
    USE mysql;
    UPDATE user SET authentication_string = PASSWORD('123') WHERE User = 'root';
    FLUSH PRIVILEGES;
    
  5. 退出,關閉--skip-grant-tables窗口,正常啟動服務:net start mysql
  6. 新密碼登入驗證

Linux 步驟(systemd)

  1. systemctl stop mysqld
  2. 編輯/etc/my.cnf,[mysqld]段添加skip-grant-tables
  3. systemctl start mysqld
  4. mysql -u root 免密進入,執行UPDATE+FLUSH PRIVILEGES
  5. 移除skip-grant-tables,systemctl restart mysqld

8.0+ 專用:ALTER USER 失效時的補救

-- 8.0.16+ 支援
ALTER USER 'root'@'localhost' IDENTIFIED BY 'newpass' PASSWORD EXPIRE NEVER;
-- 或直接
UPDATE mysql.user SET authentication_string = NULL, password_expired = 'N' 
WHERE User = 'root' AND Host = 'localhost';
FLUSH PRIVILEGES;

安全加固建議

  • 修改後執行mysql_secure_installation:移除匿名用戶、禁止root遠程登入、刪除test庫
  • 使用強密碼策略:VALIDATE_PASSWORD插件
  • 生產環境root僅允許localhost或特定IP登入
  • 應用程式使用專用賬號,最小權限原則

掌握四大方法,尤其「跳過授權表」急救流程,讓密碼遺失不再是事故。

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