sábado, 17 de mayo de 2008

Que hacer si no tenemos la clave de Root, en MySql?

Bueno, esta vez creo que es hora de ir al médico de tantos olvidos que uno tiene jejeje. La intención de este post, no es entrar en la base de datos de la empresa y robar información o peor aún corromperla o cambiarla!.
Obviamente asumo, que la intención de leer esto es porque probablemente les paso el mismo descuido que tuve... instalar los paquetes de mysql, y ... no acordarse cual fue la clave que le asignamos a Root!.

Esto es muy común , muchas veces generamos ambientes donde instalamos muchas aplicaciones y no anotamos cual clave fue asignada , a menos que estemos usando la misma para todo, que es igual de fatal jaja.
Bueno el caso es, que hacer si se nos olvido la clave de root en mysql?, en mi situación esto que hice me funciono teniendo Ubuntu Hardy Linux y MySql 5.0, pero igual sirve si tenemos otras distro, el hecho es que tendremos que ejecutar los siguientes pasos:
Abrimos una terminal y como root detendremos el servicio de mysql:
sudo /etc/init.d/mysql stop

Si todo sale bien, la consola nos indicará que efectivamente ha parado el servicio, posteriormente nos cambiaremos al directorio /bin y desde ahí ejecutaremos, de nuevo como root, lo siguiente:
sudo mysqld --skip-grant-tables --user=root

Esta consola quedara en un estado de stand by, después de mostrarnos varias lineas de mensajes, no hay que preocuparse y dejamos esta consola abierta sin tocar más nada, ahora lo que hacemos es abrir otra consola con la que seguiremos trabajando, en ella nos iremos de nuevo al directorio /bin y ejecutamos mysql como root:
mysql -u root

Ahora que ha pasado?, bueno si nos fijamos bien, pudimos entrar a mysql como root SIN que nos pidiera la clave de root!!, y porque pasa esto? bueno porque en el otro terminal estamos manteniendo el socket abierto para que esto suceda, hemos dejado una puerta abierta.
Y bueno ya una vez adentro nos quedará el prompt "mysql>", aquí realizaremos los cambios para poner nuestra nueva clave de root, asi que ejecutamos:
UPDATE mysql.user SET Password=PASSWORD('nueva_clave') WHERE User='root';

No olvidar poner el ; al final , recordemos que como estamos modificando una tabla de mysql esto es una sentencia igual como si modificaramos cualquier tabla ordinaria. Ejecutada la sentencia, nos indicará las filas afectadas.
Bueno, ya para ir terminando ejecutamos:
FLUSH PRIVILEGES;

Finalmente, nos salimos de mysql, escribiendo exit; .
Ahora en la terminal , lo que hacemos es volver a para el servicio, pero y hey?? ya no lo habiamos detenido anteriormente?, claro, pero dejamos un socket abierto y debe cerrarse, asi que volvemos a ejecutar en la linea de comando y como root:
sudo /etc/init.d/mysql stop

Una vez hecho esto, el otro terminal que manteniamos abierto, se va a terminar el proceso que venia corriendo y podremos cerrarlo, y en el terminal que nos queda abierto iniciamos el servicio de mysql:
sudo /etc/init.d/mysql start

Cuando haya iniciado, podremos entrar a mysql como root con nuestra nueva clave :-) , escribimos:
mysql -u root -p

1 comentario: