Recuperar contraseña root MySQL

Si alguna vez olvidáis la contraseña de root de MySQL, os traigo esta maravillosa solución de como poder restablecerla sin esfuerzo.

Primero debemos asegurarnos que nos aparece este error al intentar iniciar sesión con el usuario root:

comandoit@comandoit:~# mysql -u root -p
Enter password:
ERROR 1045 (28000): Acceso denegado para el usuario 'root' @ 'localhost' (usando la contraseña: YES)

Después de verificar que nuestro es el error de arriba, empezamos a restablecer la contraseña de MySQL:

Creamos una carpeta y hacemos que tenga permisos MySQL y el grupo de MySQL:

comandoit@comandoit:~# mkdir -p /var/run/mysqld
comandoit@comandoit:~# chown mysql:mysql /var/run/mysqld
comandoit@comandoit:~# /usr/sbin/mysqld --skip-grant-tables --skip-networking &

Detenemos el servicio MySQL:

comandoit@comandoit:~# systemctl stop mysql.service

Si no funcionara los pasos anteriores podéis intentarlo con el modo seguro de MySQL

Ejecutamos el modo seguro de MySQL:

comandoit@comandoit:~# mysqld_safe --skip-grant-tables &
2020-11-07T01:19:34.378273Z mysqld_safe Logging to '/var/log/mysql/error.log'.
2020-01-07T01:19:34.428358Z mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql

Ahora podemos ejecutar MySQL sin contraseña:

comandoit@comandoit:~# mysql -u root 

Una vez dentro de MySQL ejecutamos los siguientes comandos:

use mysql;

Cambiamos contraseña con el siguiente comando:

FLUSH PRIVILEGES;
ALTER USER 'root'@'localhost' IDENTIFIED BY 'contraseñaroot';

Si tienes una cuenta raiz para conectarte desde otro equipos, también debes ejecutar este comando:

UPDATE mysql.user SET Password=PASSWORD('contraseñaroot') WHERE User='root';

Ahora debemos refrescar los cambios realizados en la base de datos de MySQL:

FLUSH PRIVILEGES;
sudo /etc/init.d/mysql stop
sudo /etc/init.d/mysql start

Con esto ya habéis cambiado la contraseña del usuario root de MySQL sin tirarte horas pensando cual era la contraseña.

Comando IT