Hace unos dias cometi la estupidez de tratar de cambiar la contraseña del root de MySql y cuando trate de entrar... Sorpresa no aceptaba!! habia perdido la contraseña del root!
Me dedique a buscar en internet como diablos rescataba la clave, pero no encontraba informacion especifica para hacer esto (hasta publique un mensaje en un foro de esta Web).
Al fin me puse a experimentar con los pasos que conseguia en una y otra pagina. Olvidaba mencionar que la mayoria de resultados que me dio google eran para maquinas linux. Pero mi servidor tiene Windows 2000 server.
Mi intención con este articulo es facilitarle a aquellos seres desesperados que no saben que hacer cuando les pase algo como le paso a este servidor. Asi que vamos por pasos:
Ante todo aclaro que este procedimiento debe hacerce directamente en la maquina donde resida mysql, ademas el usuario de red que ejecute este procedimiento debe ser el que configuro el mysql
1.- bajar el servicio de mysql (puede hacerce ejecutando services.msc y parar el servicio mysql)
2.- abrir una consola de windows, ubicarse en el directorio donde reside mysql y ejecutar la siguiente linea:
mysqld --skip-grant-tables
nota: si no acepta es por que el nombre del archivo no es mysqld, entonces usar mysqld_safe --skip-grant-tables. Este fue el primer estrellon que me lleve, pero que es facil de intuir la solucion observando el directorio bin de mysql. El segundo estrellon que me lleve es que si aparece un error que mysql ya esta corriendo, eso quiere decir que el servicio no se pudo parar. esto puede pasar por razones de seguridad, sin embargo el responsable del servidor sabra pararlo (al menos ese fue mi caso).
3.- En este punto la consola en la cual ejecutamos la linea anterior tuvo que haberse paralizado (como si se hubiese guindado). Abrir otra consola y logearse en mysql con la cuenta root pero sin poner password. Debería entrar sin problemas.
4.- seleccionar la base de datos mysql (use mysql;) y ejecutar la siguiente linea
INSERT INTO user VALUES('localhost', 'root2', '', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', '', '', '', '', '0', '0', '0');
nota: Esto es para insertar un usuario con todos los privilegios. ya se algunos diran, por que no cambiar la clave de root con update set password, yo probe eso, pero la operacion no era permitida por el modo en que corria mysql.
5.- una vez creado el nuevo superusuario (root2), por medio del administrador de tareas matar el proceso correspondiente a mysqld --skip-grant-tables (el cual debería llamarse mysqld.exe)
6.- arrancar el servicio de mysql nuevamente (por services.msc)
7.- ingresar a mysql logueandose como root2 sin password (ya que no tiene).
8.- seleccionar la base de datos mysql (use mysql;)
9.- ejecutar la sentencia
UPDATE user SET Password=PASSWOR('nueva_contraseña') WHERE User='root';
flush privileges;
nota: que no se olvide ejecutar flush privileges. por no hacer esto fue que perdi la contraseña de root
10.- salir de mysql con el comando exit
11.- ingresar con el usuario root que se acaba de modificar
12.- eliminar el usuario root2 de la siguiente forma
use mysql;
delete from user where user='root2';
flush privileges;
fin del procedimiento. Espero que esto les sirva a la mayor cantidad de personas posibles y no pasen tanto trabajo buscando que hacer.
Autor: Marlon Chacon Herrera