Recuperar contraseña root en MySQL

En este pequeño truco se muestra la manera de recuperar la contraseña de root en mysql en caso de perdida u olvido.

Decir que este método no es válido si MySQL fue compilado y configurado con la opción '--disable-grant-options'.

Detenemos el servicio

#>service mysqld stop

Iniciamos en modo seguro o completo

#>mysqld_safe --skip-grant-tables --skip-networking&

La opción --skip-grant-tables evita que el servidor use el sistema de privilegios con lo que conseguimos acceso ilimitado a todas las bases de datos con cualquier usuario.

Con la opción --skip-networking evitamos que durante el periodo de tiempo que dure el proceso, el servidor escuche conexiones TCP/IP. Solo trabajamos en un ambiente local. Así evitamos que alguien se nos cuele en la base de datos.

Iniciamos el cliente mysql como root

#>mysql -u root

En este caso no nos va a pedir la contraseña.

Conmutamos a la base de datos de mysql

mysql> use mysql;

Ejecutamos el comando para asignar la contraseña

mysql> UPDATE user SET password=PASSWORD('nuevo_pass') WHERE user='root';
Query OK, 3 rows affected (0.07 sec)
Rows matched: 3 Changed: 1 Warnings: 0
mysql> exit
#>

Reiniciamos el servidor

#> service mysqld restart

La siguiente vez que ingresemos ya nos pedirá la nueva clave.