Skip to content

Instantly share code, notes, and snippets.

@ivancorrales
Last active July 14, 2026 02:12
Show Gist options
  • Select an option

  • Save ivancorrales/3814ccaa281829e9e0723dd68c58d23b to your computer and use it in GitHub Desktop.

Select an option

Save ivancorrales/3814ccaa281829e9e0723dd68c58d23b to your computer and use it in GitHub Desktop.
mysql_reset_password.bat
@echo off
setlocal enabledelayedexpansion
REM ============================================================
REM Reset password MySQL Windows
REM Nueva password root: Admin1234
REM Ejecutar como ADMINISTRADOR
REM ============================================================
set "NEW_PASSWORD=Admin1234"
set "MYSQL_USER=root"
set "MYSQL_HOST=localhost"
echo.
echo ============================================
echo RESET PASSWORD MYSQL - WINDOWS
echo ============================================
echo.
REM Comprobar permisos de administrador
net session >nul 2>&1
if %errorlevel% neq 0 (
echo [ERROR] Este script debe ejecutarse como Administrador.
echo Haz clic derecho sobre el .bat y selecciona "Ejecutar como administrador".
pause
exit /b 1
)
echo [OK] Permisos de administrador detectados.
echo.
REM Detectar servicio MySQL habitual
set "MYSQL_SERVICE="
sc query MySQL80 >nul 2>&1
if %errorlevel% equ 0 set "MYSQL_SERVICE=MySQL80"
if "%MYSQL_SERVICE%"=="" (
sc query MySQL >nul 2>&1
if %errorlevel% equ 0 set "MYSQL_SERVICE=MySQL"
)
if "%MYSQL_SERVICE%"=="" (
echo [AVISO] No he podido detectar automaticamente el servicio.
echo.
echo Servicios que contienen MySQL:
sc query state= all | findstr /I mysql
echo.
set /p MYSQL_SERVICE=Escribe el nombre exacto del servicio, por ejemplo MySQL80:
)
echo [OK] Servicio MySQL: %MYSQL_SERVICE%
echo.
REM Buscar mysqld.exe en rutas habituales
set "MYSQLD_PATH="
if exist "C:\Program Files\MySQL\MySQL Server 8.4\bin\mysqld.exe" (
set "MYSQLD_PATH=C:\Program Files\MySQL\MySQL Server 8.4\bin\mysqld.exe"
)
if "%MYSQLD_PATH%"=="" (
if exist "C:\Program Files\MySQL\MySQL Server 8.3\bin\mysqld.exe" (
set "MYSQLD_PATH=C:\Program Files\MySQL\MySQL Server 8.3\bin\mysqld.exe"
)
)
if "%MYSQLD_PATH%"=="" (
if exist "C:\Program Files\MySQL\MySQL Server 8.2\bin\mysqld.exe" (
set "MYSQLD_PATH=C:\Program Files\MySQL\MySQL Server 8.2\bin\mysqld.exe"
)
)
if "%MYSQLD_PATH%"=="" (
if exist "C:\Program Files\MySQL\MySQL Server 8.1\bin\mysqld.exe" (
set "MYSQLD_PATH=C:\Program Files\MySQL\MySQL Server 8.1\bin\mysqld.exe"
)
)
if "%MYSQLD_PATH%"=="" (
if exist "C:\Program Files\MySQL\MySQL Server 8.0\bin\mysqld.exe" (
set "MYSQLD_PATH=C:\Program Files\MySQL\MySQL Server 8.0\bin\mysqld.exe"
)
)
if "%MYSQLD_PATH%"=="" (
echo [AVISO] No he encontrado mysqld.exe en las rutas habituales.
echo.
echo Ruta habitual:
echo C:\Program Files\MySQL\MySQL Server 8.0\bin\mysqld.exe
echo.
set /p MYSQLD_PATH=Introduce la ruta completa de mysqld.exe:
)
if not exist "%MYSQLD_PATH%" (
echo.
echo [ERROR] No existe esta ruta:
echo %MYSQLD_PATH%
pause
exit /b 1
)
echo [OK] mysqld.exe encontrado:
echo %MYSQLD_PATH%
echo.
REM Crear fichero SQL temporal
set "INIT_FILE=%TEMP%\mysql_reset_password.sql"
echo [INFO] Creando fichero SQL temporal...
echo ALTER USER '%MYSQL_USER%'@'%MYSQL_HOST%' IDENTIFIED BY '%NEW_PASSWORD%'; > "%INIT_FILE%"
echo FLUSH PRIVILEGES; >> "%INIT_FILE%"
echo [OK] Fichero creado:
echo %INIT_FILE%
echo.
REM Parar servicio
echo [INFO] Parando servicio %MYSQL_SERVICE%...
net stop "%MYSQL_SERVICE%"
echo.
echo [INFO] Esperando 5 segundos...
timeout /t 5 /nobreak >nul
REM Arrancar MySQL temporal con init-file
echo.
echo [INFO] Arrancando MySQL temporalmente para cambiar password...
start "mysql-reset-temp" /min "%MYSQLD_PATH%" --init-file="%INIT_FILE%" --skip-networking
echo.
echo [INFO] Esperando 15 segundos para que se aplique el cambio...
timeout /t 15 /nobreak >nul
REM Cerrar proceso temporal
echo.
echo [INFO] Cerrando proceso temporal mysqld.exe...
taskkill /F /IM mysqld.exe >nul 2>&1
echo.
echo [INFO] Borrando fichero temporal...
del "%INIT_FILE%" >nul 2>&1
REM Arrancar servicio normal
echo.
echo [INFO] Arrancando servicio %MYSQL_SERVICE%...
net start "%MYSQL_SERVICE%"
if %errorlevel% neq 0 (
echo.
echo [ERROR] No se pudo arrancar el servicio.
echo Prueba manualmente:
echo net start %MYSQL_SERVICE%
pause
exit /b 1
)
echo.
echo ============================================
echo PASSWORD RESETEADA
echo ============================================
echo.
echo Usuario: %MYSQL_USER%
echo Password: %NEW_PASSWORD%
echo.
echo Prueba con:
echo mysql -u root -p
echo.
pause
endlocal
@leoce85

leoce85 commented Jul 14, 2026

Copy link
Copy Markdown

@echo ON
@echo OFF
if not "%1"=="am_admin" (powershell start -verb runas '%0' am_admin & exit /b)
@echo ON
@echo OFF

inserindo essas vareaveis antes de (setlocal enabledelayedexpansion), a bate executa automaticamente como ADMINISTRADOR

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment