Tutorial paso-a-paso Restauración de password en un SGBBDD MySQL por pérdida

Una de las tareas de administración típicas de un sistema gestor de bases de datos es mantener las contraseñas administrativas a buen recaudo, lo que no evita que, en algunos casos, seamos tan cuidadosos que lleguemos a olvidar esta clave o el lugar donde las tenemos apuntadas.

En caso de olvido o pérdida de la contraseña administrativa de MySQL, nos veremos imposibilitados para crear, modificar, alterar o actualizar tanto las bases de datos como el propio sistema gestor, impidiendo la actualización a nuevas versiones desde “apt-get“.

Este tutorial te va a mostrar paso-a-paso cómo restaurar una contraseña administrativa de MySQL que te garantizará el acceso “root” al sistema gestor. Es probable que lo hayas estudiado en tu itinerario de Administración de Sistemas Informáticos en Red así que te vendrá estupendamente como recordatorio.

¿Cómo lo hago?

Dificultad: media

Lo primero que necesitas tener en cuenta es que se requiere acceso root al sistema, es decir, debes tener la posibilidad de acceder al servidor con un superusuario con permisos para cargar MySQL en modo “–skip-grant-tables“.

Un error clásico es considerar que el acceso “root” a MySQL es el mismo que el “root” del sistema. Hay que tener claro que el “root” de MySQL sólo da permisos para la administración del sistema gestor de bases de datos y no para el sistema operativo.

Primer paso

Parar el servicio MySQL.

Lo primero que debemos hacer es parar el servicio, que no el servidor. Elevamos privilegios a superusuario con “sudo su“. Los comandos para parar el servicio son:

Ubuntu/Debian

/etc/init.d/mysql stop 
service mysql stop 

CentOS, Fedora

/etc/init.d/mysqld stop 
service mysqld stop 

 Segundo Paso

Modo seguro.

Iniciaremos el servicio en modo seguro, es decir, solicitando la carga de MySQL evitando tener en cuenta las tablas que gestionan los permisos de los usuarios de MySQL.

 mysqld_safe --skip-grant-tables & 

Ojo con el “&” final, si no lo especificas, no tendrás acceso. Este error lo he cometido mil veces y me ha supuesto gran pérdida de tiempo en varias ocasiones 😉

Tercer Paso

Acceder a MySQL.

Este punto es muy sencillo. Entramos por línea de comandos como lo solemos hacer pero sin especificar contraseña:

mysql -u root 

Usar la base de datos apropiada.

Una vez dentro de MySQL, indicamos al sistema qué BD vamos a usar:

use mysql; 

Restauramos la clave.

Momento cumbre, restaurar la contraseña del usuario administrador de MySQL.

update user set password=PASSWORD("nuevaclave") where User='root';

¿Qué hace este comando? “update” actualiza en la tabla “user” con la “nuevaclave” donde el “User” es igual a “root“.

Recargamos los privilegios con:

flush privileges; 

Y salimos de MySQL

quit 

Reiniciamos el servicio

service mysql stop

service mysql start

O usamos el comando que corresponda con vuestra distro.

Prueba de acceso

Entramos como siempre:

mysql -u root -p 

Es importante no especificar la contraseña detrás del parámetro “-p”. Si no la especificas, el sistema te preguntará por la clave y ésta no se mostrará en pantalla impidiendo que otros puedan ver qué hemos escrito.

Este artículo es Creative Commons y, si quieres usarlo, es gratis. Sólo te pido que menciones el origen del mismo 😉