標準 MySQL 安裝版腳本
@echo off
title MySQL Root 密碼重置工具
:: 1. 從注冊表獲取 MySQL 安裝路徑
reg query HKLM\SYSTEM\ControlSet001\Services\MySQL | find /I "ImagePath" > C:\mysql.txt
if %errorlevel% neq 0 (
echo MySQL 服務未找到
pause & exit
)
:: 2. 解析路徑(去除引號、正規化斜杠)
FOR /F "tokens=2 delims=^"" %%i in (C:\mysql.txt) do set mysqlPath=%%i
del C:\mysql.txt /f
set mysqlPath=%mysqlPath:/=\%
set mysqlPath=%mysqlPath:~0,-1%
:BACKTOMAIN
set character=%mysqlPath:~-1,1%
if not %character% == \ goto GETPATH
:: 3. 進入 bin 目錄
cd /d "%mysqlPath%"
if %errorlevel% neq 0 (echo 路徑無效 & pause & exit)
:: 4. 停止服務、跳過授權表啟動
taskkill /F /IM mysqld-nt.exe
net stop mysql >nul
start /b mysqld-nt --skip-grant-tables
ping -n 2 127.0.0.1 >nul
:: 5. 執行重置 SQL
echo use mysql > c:\config.tmp
echo update user set password=password("") where user="root"; >> C:\config.tmp
echo flush privileges; >> C:\config.tmp
echo exit >> C:\config.tmp
mysql < C:\config.tmp
:: 6. 重啟服務驗證
taskkill /F /IM mysqld-nt.exe
net stop mysql >nul
net start mysql
del C:\config.tmp /F
echo 密碼已重置為空,請立即登錄修改新密碼!
pause
exit
:GETPATH
set mysqlPath=%mysqlPath:~0,-1%
goto BACKTOMAIN
WAMP 一鍵安裝包適配版
@echo off
title WAMP MySQL Root 密碼重置
:: WAMP 服務名、注冊表路徑、進程名均不同
reg query HKLM\SYSTEM\ControlSet001\Services\wampmysqld | find /I "ImagePath" > C:\mysql.txt
if %errorlevel% neq 0 (echo WAMP MySQL 未找到 & pause & exit)
FOR /F "tokens=3 delims= " %%i in (C:\mysql.txt) do set mysqlPath=%%i
del C:\mysql.txt /f
set mysqlPath=%mysqlPath:/=\%
set mysqlPath=%mysqlPath:~0,-1%
:BACKTOMAIN
set character=%mysqlPath:~-1,1%
if not %character% == \ goto GETPATH
cd /d "%mysqlPath%"
if %errorlevel% neq 0 (echo 路徑無效 & pause & exit)
taskkill /F /IM mysqld.exe
net stop wampmysqld >nul
start /b mysqld --skip-grant-tables
ping -n 2 127.0.0.1 >nul
echo use mysql > c:\config.tmp
echo update user set password=password("") where user="root"; >> C:\config.tmp
echo flush privileges; >> C:\config.tmp
echo exit >> C:\config.tmp
mysql < C:\config.tmp
taskkill /F /IM mysqld.exe
net stop wampmysqld >nul
net start wampmysqld
del C:\config.tmp /F
echo WAMP MySQL root 密碼已重置為空
pause
exit
:GETPATH
set mysqlPath=%mysqlPath:~0,-1%
goto BACKTOMAIN
關鍵差異對比
| 項目 | 標準版 | WAMP 版 |
| 服務名 | MySQL | wampmysqld |
| 注冊表鍵 | ...\\Services\\MySQL | ...\\Services\\wampmysqld |
| 進程名 | mysqld-nt.exe | mysqld.exe |
| 安裝路徑 | C:\\Program Files\\MySQL... | D:\\wamp\\bin\\mysql\\mysql5.x\\bin |
| 注冊表解析 | tokens=2 delims=" | tokens=3 delims=空格 |
安全警示
- ⚠️ 腳本將密碼置空,必須立即登錄設置強密碼
- ⚠️
--skip-grant-tables 期間任何人可無密碼訪問,僅在維護窗口運行
- ⚠️ 生產環境嚴禁使用,請用官方
mysqladmin 或 ALTER USER
- ✅ MySQL 5.7+ 推薦:
mysqladmin -u root -p password 'newpass'
- ✅ MySQL 8.0+ 推薦:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'newpass';
通用手動重置步驟(跨平台)
# 1. 停止服務
systemctl stop mysqld
# 2. 跳過授權啟動
mysqld_safe --skip-grant-tables &
# 3. 免密登錄
mysql -u root
# 4. 修改密碼 (5.7+)
UPDATE mysql.user SET authentication_string=PASSWORD('newpass') WHERE User='root';
FLUSH PRIVILEGES;
# 5. 正常重啟
systemctl restart mysqld
- 上一篇文章: SELinux 導致 PHP 無法連接 MySQL (Can't connect) 完整排查與解決
- 下一篇文章: 21 條 MySQL 優化建議:從硬件到參數的經驗總結
Copyright ©
程式碼之家 All Rights Reserved