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

CentOS 環境下 MySQL Root 密碼重置完整步驟

     編輯:MySQL 綜合教學

CentOS 環境下 MySQL Root 密碼重置完整步驟

遺忘 MySQL root 密碼是常見運維場景。本文提供 CentOS 系統下通用的密碼重置流程,基於跳過權限表啟動實例,適用於 MySQL 5.6/5.7/8.0(部分命令略有差異,文中標註)。

前置條件

  • 具備服務器 root 或 sudo 權限。
  • 確認 MySQL 服務名稱(mysqld、mysql 或 mariadb)。

步驟詳解

1. 停止 MySQL 服務

# Systemd 系統
systemctl stop mysqld
# 或 SysVinit
service mysqld stop

2. 以跳過權限模式啟動

啟動參數 --skip-grant-tables 使臨時實例不驗證密碼;--skip-networking 防止外部連入(安全)。

mysqld_safe --skip-grant-tables --skip-networking &
# 輸出示例:
# Starting mysqld daemon with databases from /var/lib/mysql
# mysqld_safe[12345]: started

MySQL 8.0+ 注意:需額外指定 --shared-memory(Windows)或確保 socket 文件可寫;部分版本需先建立 /var/run/mysqld 目錄並授權。

3. 無密碼登錄

mysql -u root
# 進入 mysql> 提示符

4. 修改密碼

MySQL 5.7 / 8.0(推薦 ALTER USER):

FLUSH PRIVILEGES;  -- 必須先執行,刷新 grant tables
ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewStrongPass123!';
-- 或支援 mysql_native_password 插件
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'NewStrongPass123!';

MySQL 5.6 舊語法:

FLUSH PRIVILEGES;
UPDATE mysql.user SET authentication_string = PASSWORD('NewStrongPass123!') WHERE User = 'root' AND Host = 'localhost';
FLUSH PRIVILEGES;

5. 退出並正常重啟服務

QUIT;
# 停止臨時實例
mysqladmin -u root -p shutdown
# 輸入新密碼確認
# 正常啟動
systemctl start mysqld

6. 驗證新密碼

mysql -u root -p
# 輸入新密碼,成功進入即完成重置

常見問題排查

現象原因與解決
ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement未執行 FLUSH PRIVILEGES; 就嘗試修改密碼
mysqld_safe 無法啟動,提示 socket 錯誤檢查 /var/run/mysqld 目錄存在且 mysql 用戶可寫
密碼策略報錯新密碼需滿足 validate_password 策略:長度、大小寫、數字、特殊字符
Host 不是 localhost檢查 SELECT User, Host FROM mysql.user; 確認實際 Host 值(可能為 127.0.0.1、% 等)

安全建議

  1. 重置後立即執行 mysql_secure_installation 移除匿名用戶、禁止 root 遠程登錄、刪除 test 庫。
  2. 生產環境勿使用 root 直連應用,建立專用賬號並最小權限授權。
  3. 密碼定期輪換,存儲於密碼管理器而非腳本明文。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved