Last active
July 14, 2026 02:12
-
-
Save ivancorrales/3814ccaa281829e9e0723dd68c58d23b to your computer and use it in GitHub Desktop.
mysql_reset_password.bat
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| @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 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
@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