Está mañana me he encontrado con la necesidad de acceder a mi base de datos, a nivel root, para enseñarle a un colega la diferencia entre mi base de datos y la suya, pero cuando he ido a meter credenciales, nanai de la china.
La mente cuando no usas una cosa durante mucho tiempo, la va apartando y la arrincona, hasta que deja de ser accesible, y te crea problemas, o mas bien sustos.
Visto lo cual no me ha quedado otra que indagar por internet, porque ya me paso otra vez, pero hace tanto tiempo que no recordaba como se hacia, es tambien por falta de uso.
El nombre de la entrada ya es engañosa, porque NO recuperas la pass, lo que este procedimiento te permite es cambiarla, creando una nueva, para continuar con tus menesteres, desconozco si hay procedimiento para descubrirla (descartando el metodo de fuerza bruta).
Lo primero que se tiene que hacer en para la base de datos, para despues entrar en modo seguro, se hace el cambio de pass, y despues se arranca en modo normal MySQL, como si tal cosa. Veamos como hacemos esto.
NOTA: Apunte actualizado para MySQL 4.1+ Que se cambia la forma en la que se modifica este parametro. de usar:
UPDATE user SET Password=ClavedeRoot WHERE User='root'; FLUSH PRIVILEGES; exit;
pasamos a:
UPDATE user SET Password=password('ClavedeRoot') WHERE User='root'; FLUSH PRIVILEGES; exit;
Fundamental tener credenciales de root a nivel sistema, o usuario que gestione el servicio de MySQL. Como siempre en mi caso es debian, y el usuario que para y arranca MySQL es root.
:/#service mysql stop
o usando init.d
:/#/etc/init.d/mysql stop
Ya tenemos MySQL parada, ahora tenemos que iniciarla en modo seguro.
:/#mysqld_safe --skip-grant-tables
Esto nos mantiene la consola "bloqueada", lo que nos obliga a tener que abrir otra en otra terminal, ya sea con putty o con Alt+F1 nos autenticamos como root, y procedemos a llamar a la CLI de MySQL con.
:/#mysql -u root
No nos pide contraseña estamos en modo "seguro" o mantenimiento, una vez dentro de la CLI de MySQL selecionamos la BBDD que contiene los usuarios de la propia MySQL, de este modo. "Para quien esté mas PEZ, el ";" es como el Intro (retorno de carro) lanza el comando."
mysql>use mysql;
mysql>UPDATE user SET Password=password('clavederoot') WHERE User='root'; FLUSH PRIVILEGES; exit;
Es evidente que teneis que poner una pass que os sea familiar para que no os pase otra vez, si es especifica, apuntarla. Parar la base de datos en modo seguro para arrancarla en modo normal, esto quedaria en comandos de este modo.
:/#/etc/init.d/mysql stop
:/#/etc/init.d/mysql start
Paramos el modo mysql_safe para arrancalo en modo normal, no hace falta poner mysql_safe stop. Tambien podemos hacerlo con:
:/#service mysql stop
:/#service mysql start
Con estos sencillos pasos, ya podremos acceder a MySQL, desde la CLI en modo "normal" y utilizar phpMyAdmin. Podriamos terminar cerciorandonos que MySQL está corriendo mediante.
:/#service mysql status