Cómo restablecer la contraseña de root de MySQL en cPanel (SSH)
¿Por qué necesitarías restablecer la contraseña de root de MySQL?
Cuando gestionas un servidor con cPanel, la contraseña del usuario root de MySQL es una pieza fundamental para administrar tus bases de datos. Sin ella, no podrás acceder a la consola de MySQL, crear nuevas bases de datos, importar copias de seguridad o realizar tareas de mantenimiento críticas.
Puede que necesites hacer un reset password mysql root porque:
- Olvidaste la contraseña después de un tiempo sin usarla.
- Un ex-colaborador o desarrollador externo la cambió y no te la comunicó.
- La contraseña se corrompió tras un fallo del sistema o una migración.
- Quieres establecer una contraseña nueva más segura por política de la empresa.
En este artículo te explicaré, paso a paso y con un lenguaje claro, cómo restablecerla usando cPanel ssh mysql. No necesitas ser un experto en Linux, solo seguir las instrucciones con calma y atención.
Requisitos previos antes de empezar
Antes de lanzarte a ejecutar comandos, asegúrate de tener lo siguiente:
- Acceso SSH a tu servidor: Necesitas poder conectarte por SSH. Esto normalmente se hace con un programa como PuTTY (en Windows) o directamente desde la terminal (en Mac o Linux).
- Credenciales de usuario root del sistema: O al menos un usuario con privilegios
sudo. Este es el usuario del servidor, no el de MySQL. - Acceso a cPanel: Aunque el proceso se hace por SSH, a veces es útil tener cPanel abierto para verificar servicios o reiniciar cosas si es necesario.
- Un poco de paciencia: Si nunca has usado SSH, ve con calma. Cada comando debe ejecutarse de uno en uno.
[WARNING] Este proceso requiere permisos de administrador del sistema. Si no tienes acceso root al servidor (por SSH), no podrás realizarlo. En ese caso, contacta con tu proveedor de hosting.
Método 1: Restablecer la contraseña de root de MySQL (la forma segura)
Este es el método recomendado y el que menos riesgo de errores tiene. No necesitas detener el servicio de MySQL, lo que significa que tus sitios web seguirán funcionando durante el proceso.
Paso 1: Conéctate a tu servidor por SSH
Abre tu terminal o PuTTY y conéctate a la IP de tu servidor con el usuario root (o un usuario con permisos sudo).
ssh root@tu_ip_del_servidor
Te pedirá la contraseña del sistema. Escríbela y pulsa Enter.
Paso 2: Accede a la consola de MySQL con el usuario root del sistema
Una vez dentro del servidor, ejecuta el siguiente comando. Este comando usa las credenciales del sistema (root de Linux) para entrar en MySQL sin necesidad de conocer la contraseña actual de MySQL.
mysql -u root
Si esto no funciona (porque tu sistema está configurado de otra manera), prueba con este otro:
sudo mysql -u root
¿Qué está pasando aquí? El usuario root del sistema operativo tiene permisos especiales que, por defecto, le permiten entrar en MySQL sin contraseña (usando el plugin auth_socket). Si tu servidor está configurado así, entrarás directamente.
Paso 3: Cambia la contraseña de root de MySQL
Ahora que estás dentro de la consola de MySQL (verás un prompt parecido a mysql>), ejecuta este comando SQL. Reemplaza Nueva_Contraseña_Segura por la contraseña que quieras usar.
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'Nueva_Contraseña_Segura';
Explicación del comando:
ALTER USER: Es la instrucción para modificar un usuario.'root'@'localhost': Indica que estamos cambiando al usuario root que se conecta desde el servidor local.IDENTIFIED WITH mysql_native_password: Especifica el método de autenticación. Este es el más compatible, sobre todo si usas aplicaciones antiguas o scripts de PHP.BY 'Nueva_Contraseña_Segura': Aquí pones la nueva contraseña.
[TIP] Elige una contraseña robusta. Combina mayúsculas, minúsculas, números y símbolos. Por ejemplo:
MyN3w$ecurePass!2024. Evita usar caracteres como comillas simples o dobles dentro de la contraseña, ya que pueden interferir con el comando.
Paso 4: Aplica los cambios y sal de MySQL
Después de ejecutar el comando anterior, escribe:
FLUSH PRIVILEGES;
Este comando recarga los permisos y se asegura de que el cambio se aplique correctamente.
Luego, sal de la consola de MySQL escribiendo:
EXIT;
Paso 5: Prueba el acceso con la nueva contraseña
Ya fuera de MySQL, prueba a entrar con la nueva contraseña para verificar que todo funciona.
mysql -u root -p
Te pedirá la contraseña. Escribe la nueva y deberías acceder sin problemas. Si entras, ¡enhorabuena! Ya has completado el reset password mysql root.
[INFO] Este método no interrumpe el servicio de MySQL. Tus sitios web y aplicaciones que usen bases de datos no se verán afectados durante el proceso.
Método 2: Restablecer la contraseña en modo seguro (cuando no puedes acceder)
Este método es para situaciones más complicadas, por ejemplo, si el método anterior no funciona porque el plugin auth_socket no está activo o porque la configuración de MySQL te bloquea el acceso. En este caso, tendrás que detener MySQL temporalmente, iniciarlo en modo seguro y cambiar la contraseña.
[WARNING] Este método sí detiene el servicio de MySQL. Durante el proceso, todos los sitios web que dependan de bases de datos en ese servidor estarán caídos. Asegúrate de hacerlo en una ventana de bajo tráfico o avisa a tus usuarios.
Paso 1: Detén el servicio de MySQL
Conectado por SSH, ejecuta el siguiente comando para detener MySQL.
systemctl stop mysql
O si tu sistema usa otro gestor de servicios:
service mysql stop
Paso 2: Inicia MySQL en modo seguro (sin red y sin tablas de permisos)
Ahora iniciamos MySQL con la opción --skip-grant-tables, que nos permite entrar sin contraseña y sin que se carguen las tablas de usuarios.
mysqld_safe --skip-grant-tables &
El símbolo & al final es para que el proceso se ejecute en segundo plano.
Paso 3: Entra en MySQL sin contraseña
Ahora, en la misma sesión SSH, ejecuta:
mysql -u root
Deberías entrar directamente, sin que te pida contraseña.
Paso 4: Fuerza la recarga de los privilegios y cambia la contraseña
Una vez dentro, lo primero que haremos es decirle a MySQL que queremos usar las tablas de permisos, aunque no las haya cargado.
FLUSH PRIVILEGES;
Ahora, cambia la contraseña del usuario root. En esta ocasión, usamos un comando un poco más directo.
ALTER USER 'root'@'localhost' IDENTIFIED BY 'Nueva_Contraseña_Segura';
Nota: No hemos especificado el método de autenticación. En este caso, MySQL usará el método por defecto que tenga configurado el servidor. Si luego tienes problemas con aplicaciones antiguas, deberás cambiarlo al método mysql_native_password como en el primer método.
Paso 5: Sal y reinicia MySQL de forma normal
Escribe EXIT; para salir de la consola de MySQL.
Ahora, detén el proceso en modo seguro. Para ello, busca el proceso y mátalo:
killall mysqld_safe
O si prefieres, puedes usar el comando pkill:
pkill -f mysqld_safe
Finalmente, inicia MySQL de nuevo de la manera normal:
systemctl start mysql
O si usas service:
service mysql start
Paso 6: Verifica el acceso
Prueba a entrar con la nueva contraseña:
mysql -u root -p
Si todo ha ido bien, ya tienes acceso. Recuerda que durante el proceso tus sitios web han estado caídos, pero ahora deberían funcionar con normalidad.
[WARNING] Después de usar el modo seguro, es obligatorio reiniciar MySQL de la forma normal. No dejes el servidor funcionando con
--skip-grant-tablesactivado, ya que es un agujero de seguridad grave. Cualquier persona con acceso al servidor podría entrar en MySQL sin contraseña.
¿Qué hago si no tengo acceso SSH al servidor?
Si no tienes acceso SSH, la cosa se complica. No podrás ejecutar los comandos necesarios para el reset password mysql root por ti mismo. En este caso, tus opciones son:
- Contactar con tu proveedor de hosting: La mayoría de los proveedores de hosting dedicado o VPS pueden restablecer la contraseña de root de MySQL por ti. Abre un ticket de soporte y pídeles que lo hagan. Normalmente lo resuelven en unos minutos.
- Usar WHM (Web Host Manager): Si tu servidor tiene WHM (el panel de administración de cPanel), a veces puedes cambiar la contraseña de root de MySQL desde allí. Ve a
Home » SQL Services » MySQL Root Password. Sin embargo, necesitas acceso a WHM, que no es lo mismo que cPanel.
[TIP] Si tu hosting usa un panel alternativo llamado Syspanel, el acceso se realiza a través del puerto 2106. En este panel, la gestión de bases de datos es similar a cPanel, pero la opción de cambiar la contraseña root de MySQL puede estar en la sección de "Bases de Datos" o "Servicios". Si no la encuentras, contacta con el soporte de Syspanel.
Preguntas frecuentes (FAQ) sobre el restablecimiento de la contraseña root de MySQL
¿Es seguro cambiar la contraseña root de MySQL?
Sí, es seguro siempre que uses una contraseña fuerte y la guardes en un lugar seguro. De hecho, es una buena práctica de seguridad cambiarla periódicamente.
¿Afectará el cambio de contraseña a mis sitios web?
Sí, pero solo de forma temporal y muy breve. Si tus aplicaciones (como WordPress) se conectan a MySQL usando la contraseña root, dejarán de funcionar hasta que actualices la contraseña en sus archivos de configuración (normalmente wp-config.php en WordPress). Es recomendable actualizar esos archivos inmediatamente después del cambio.
¿Puedo usar el mismo método para cambiar la contraseña de otros usuarios de MySQL?
Sí, el comando ALTER USER funciona para cualquier usuario. Solo tienes que cambiar el nombre de usuario y el host en el comando.
¿Qué hago si después de cambiar la contraseña, mis aplicaciones dan error de conexión?
Esto es normal. Debes actualizar la contraseña en los archivos de configuración de tus aplicaciones. Busca archivos como wp-config.php (WordPress), .env (Laravel) o configuration.php (Joomla) y actualiza los datos de conexión a la base de datos.
¿Cuál es la diferencia entre mysql_native_password y el método por defecto?
mysql_native_password es un método de autenticación antiguo pero muy compatible. Los métodos más nuevos (como caching_sha2_password) son más seguros pero pueden dar problemas con aplicaciones antiguas escritas en PHP o con versiones viejas de librerías. Si tienes problemas, usa mysql_native_password.
¿Puedo restablecer la contraseña de root de MySQL desde cPanel?
No directamente. cPanel no tiene una opción para cambiar la contraseña root de MySQL desde su interfaz. Eso se hace desde WHM o por SSH, como hemos explicado.
Conclusión y buenas prácticas
Restablecer la contraseña de root de MySQL en un servidor cPanel es un proceso sencillo si tienes acceso SSH. El método más recomendado es el primero, ya que no interrumpe el servicio. El segundo método es más invasivo y solo debe usarse en caso de emergencia.
Para finalizar, te dejo algunas buenas prácticas:
- Guarda tus contraseñas en un gestor de contraseñas (como Bitwarden o 1Password).
- No uses la misma contraseña para MySQL que para el sistema operativo.
- Cambia la contraseña de root de MySQL al menos una vez al año.
- Si tienes varios sitios web, considera crear usuarios de MySQL específicos para cada base de datos en lugar de usar root para todo. Es más seguro y facilita la gestión.
- Documenta el proceso y las contraseñas en un lugar seguro para que otros administradores de tu equipo puedan acceder cuando lo necesiten.
Espero que esta guía te haya sido de ayuda. Si has seguido los pasos correctamente, ya deberías tener acceso a tu MySQL. Si te encuentras con algún error, revisa que has escrito bien los comandos y que la contraseña no contiene caracteres especiales que puedan interferir. ¡Mucha suerte!
