# 查看版本 rpm -qa | grep -i mysql # MySQL-server-5.6.xx # 停止服務 service mysql stop # 或 systemctl stop mysqld
# 後台啟動,跳過權限檢查 mysqld_safe --skip-grant-tables & # 等待幾秒確認啟動成功 # 日志提示:mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
# 直接登錄(無需密碼)
mysql
# 進入 mysql 系統庫
USE mysql;
# 修改 root 密碼(5.6 語法:Password 列)
UPDATE user SET Password=PASSWORD('NewStrongP@ss123') WHERE User='root';
# 刷新權限(關鍵!否則不生效)
FLUSH PRIVILEGES;
# 退出
EXIT;
# 停止 skip-grant-tables 進程 # 找到 PID ps aux | grep mysqld kill -TERM# 或使用 service 停止(若註冊了服務) service mysql stop # 正常啟動 service mysql start
# 使用新密碼登錄
mysql -u root -p'NewStrongP@ss123'
# 5.6.10+ 可能要求重置密碼(密碼過期機制)
SET PASSWORD = PASSWORD('NewStrongP@ss123');
# 驗證權限
SHOW DATABASES;
# 1. 停止服務 net stop mysql # 2. 管理員 CMD 進入 bin 目錄 cd C:\Program Files\MySQL\MySQL Server 5.6\bin # 3. 啟動跳過授權 mysqld --skip-grant-tables --console # 新開一個 CMD 窗口執行後續操作 # 4. 修改密碼同 Linux # 5. 關閉跳過授權窗口 (Ctrl+C),正常啟動服務 net start mysql
| 問題 | 原因 | 解決 |
|---|---|---|
| mysqld_safe 無法啟動 | 殘留進程 / data 目錄權限 / 配置錯誤 | kill 所有 mysqld、chown mysql:mysql /var/lib/mysql、檢查 my.cnf |
| UPDATE 影響 0 行 | root 賬戶 Host 不匹配(如 'root'@'127.0.0.1') | WHERE User='root' AND Host='%' / 具體 Host |
| FLUSH PRIVILEGES 報錯 | skip-grant-tables 下部分權限操作受限 | 重啟正常服務後再 FLUSH |
| 登錄提示 ERROR 1820 | 密碼標記為過期 | SET PASSWORD = PASSWORD('...') 重置 |
| Windows 下 --console 窗口關閉導致服務停止 | 前台運行特性 | 用 --install 安裝服務模式,或保持窗口開啟 |
DROP USER ''@'localhost';DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost','127.0.0.1','::1'); FLUSH PRIVILEGES;DROP DATABASE test;密碼重置是運維基本功,**熟練掌握 skip-grant-tables 流程,並在重置後立即完成安全基線加固**,才是專業 DBA 的標準動作。