Cómo recuperar contraseña root en Mysql

Recuperar contraseña root en MySql

Para los que gestionamos muchos servidores y contraseñas por evitable que parezca llega un día que necesitamos cambiar o recuperar la contraseña de root en mysql, bien porque se nos olvida, se nos pierde, o porque llega a nuestras manos una máquina que la configuró otra persona y es imposible contactar con él (seguro que esto os suena de algo).

Paso a paso para modificar la password de root en MySql

root@servidor# mysql -u root -p
Enter password: 
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

Vamos al grano, la situación es la siguiente: Tenemos un demonio mysql funcionando del que no tenemos ni idea de cual es su password, pero tenemos acceso físico a esa máquina, o acceso por conexión remota SSH, si estamos dentro de uno de estos dos casos podremos modificar la password actual sin conocer la que actualmente está en funcionamiento.

Modificando la password de root perdida en mysql | recuperar contraseña root en mysql
Antes de nada hacer una sencilla aclaración, demonio en Linux se llama al servicio que funciona en segundo plano y no para nunca salvo de forma manual, avería o ataque Hacker DDos Denegación de Servicio.

Logeate como usuario root de la máquina

oscar@servidor:/$ su root
Contraseña:

Parar el Servicio de Base de Datos Mysql

root@servidor:/# service mysql stop
mysql stop/waiting

Iniciar mysql con privilegios skip grant tables
Esta opción hace que la máquina servidora no use el sistema de privilegios de mysql.
Añadimos la opción –skip-networking& para entrar a mysql sin password sólo desde LOCALHOST, de este modo somos precavidos si se trata de un servidor que está en funcionamiento bajo una IP Pública.

root@servidor:/# mysqld_safe --skip-grant-tables --skip-networking&
[1] 3035


Me devuelve esto: 40405 11:56:14 mysqld_safe Logging to syslog.
140405 11:56:14 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql

Ahora entramos al mysql sin password
Como veis no hay problemas para entrar hasta la cocina sin contraseña alguna.

root@servidor:/# mysql -u root
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.1.69-0ubuntu0.10.04.1 (Ubuntu)

Modificamos la contraseña de root

mysql> UPDATE user SET password=PASSWORD(‘nuevacontraseña’) WHERE user=’root’;

Refrescamos los permisos de Mysql
Si no refrescamos los cambios no serán efectivos.

mysql> flush privileges ;

Salimos de Mysql

mysql> exit

Hacemos un restart del servicio

root@servidor:/# service mysql restart

Con esto ya hemos entrado al mysql como root sin contraseña, la hemos modificado, y el servicio queda funcionando igual que al principio.

Espero que este artículo os sirva de ayuda,
Un saludo,
Óscar / DevService Barcelona