Ads 468x60px

jueves, 28 de febrero de 2013

Ayuda! He Olvidado La Password Del Root En MySQL!!

mysql 
Probablemente en algun aspecto de tu vida como programador, administrador o relacionado :) habras en alguna ocasion olvidado o perdido la password del usuario root del motor de base de datos MySQL (vamos que hay algunos que confunden root del motor con root del sistema, y no es lo mismo). Bien, aqui te expongo los pasos a seguir en caso que te ocurra este inconveniente.


Por suerte, la solucion a este problema no es muy complicado.  Solo necesitas reiniciar MySQL con una condicion que le dira que ignore cualquier restriccion de usuario/password que exista. Asi que a proceder:

Detener el motor
root@marian:~# /etc/init.d/mysql stop
Ahora, iniciaras de forma individual no ejecutando mysql desde los scripts de inicio, ejecutaras el comando mysqld_safe asi:
root@marian:~# /usr/bin/mysqld_safe --skip-grant-tables &
[1] 4271
Starting mysqld daemon with databases from /var/lib/mysql
mysqld_safe[6763]: started
Observa bien la condicion marcada en negrita que se le ha pasado al motor. Una vez cometido este hecho, basta con que te loguees y actualizes la informacion de la password de root asi:

root@marian:~$ mysql --user=root mysql
Enter password:
mysql> update user set Password=PASSWORD('nueva password aqui') WHERE User='root';
Query OK, 2 rows affected (0.04 sec)
Rows matched: 2  Changed: 2  Warnings: 0
mysql> flush privileges;
Query OK, 0 rows affected (0.02 sec)
mysql> exit
Bye
Una vez realizado lo anterior, te tocara detener el proceso mysqld_safe he iniciarlo de forma correcta:
root@marian#  /etc/init.d/mysql start
Ahora, esta condicion solamente funciona si el MySQL que tienes instalado vino compilado (o lo compilaste tu como sea) con la opcion skip-grant-tables habilitada. Por lo general viene habilitada, pero en caso que no, y aun quieras recuperar la password de root otra forma de hacerlo es:
Utilizando un archivo de inicio init para MySQL. Para crear este archivo de texto, basta ejecutar cualquier editor y colocar dentro:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFY BY '****' WIth GRANT OPTION;
O opcionalmente dentro del archivo que usaras de init puedes indicar un UPDATE o sencillamente sino quieres, usar el query MySQL que aqui te expuse, guardas los cambios.
Luego tienes que agregar una entrada al my.cnf  principal:
init-file=/tmp/mi_archivo_init.sql
Luego vas a detener y iniciar nuevamente MySQL. Una vez iniciado y todo funcionando correctamente (incluyendo tu acceso como root con la nueva password) puedes eliminar el archivo init de MySQL que creaste.
Alguna duda pendiente?? Los comentarios seran agradecidos :)

No hay comentarios:

Publicar un comentario