Si por alguna razón, olvidaste la contraseña de root de tu servidor MySQL, en este post te explico como recuperarla. Como siempre este post aplica para distribuciones GNU/Linux basadas en RedHat.
Sintoma
Al intentar conectarte al servidor MySQL recibes un mesaje de errror 1045, como se muestra a continuación:
Enter password:
ERROR 1045 (28000): Access denied for user ‘jpacheco’@’localhost’ (using password: YES)
Pre-reqisitos
– Acceso de root en el servidor ya que es necesario detener los servicios de MySQL y arrancar el servicio de MySQL manualmente.
Procedimiento
Para solucionar este problema sigue estos ocho sencillos pasos.
1. Obten acceso de root en el servidor
Password:
[root@aex-infra jpacheco]#
2. Ahora hay que detener el servicio MySQL Server
3. A continuación, arrancaremos MySQL en modo seguro usando: safe_mysqld --
skip-grant-tables“.
140906 13:33:11 mysqld_safe Logging to ‘/var/log/mysqld.log’.
140906 13:33:11 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
El proceso anterior deberá seguir ejecutandose, por lo que necesitaras abrir una nueva consola (con acceso a root) y ejecutar en ella el comando: mysql -u root mysql
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 14
Server version: 5.5.35 MySQL Community Server (GPL)
Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the current input statement.
mysql>
Nota como MySQL server no requirio de una contraseña.
4. Ahora, asignaremos una nueva contraseña.
Query OK, 3 rows affected (0.06 sec)
Rows matched: 4 Changed: 3 Warnings: 0
mysql>
Cambia, la palabra contraseña por la nueva contraseña de root de tu servidor MySQL.
5. Un par de comandos, FLUSH PRIVILEGES; y quit; antes de continuar.
Query OK, 0 rows affected (0.00 sec)
mysql> quit;
Bye
6. Debemos terminar el proceso safe_mysqld --
skip-grant-tables que se ejecuta en la otro consola, para esto usaremos el comando: kill $(cat /var/run/mysqld/mysqld.pid)
En la otra consola nos aparecera un mensaje confirmando que MySQL se ha detenido.
140906 13:33:11 mysqld_safe Logging to ‘/var/log/mysqld.log’.
140906 13:33:11 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
140906 13:51:19 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended
7. Arrancamos MySQL server.
8. Finalmente, habras recuperado la contraseña de root de tu servidor MySQL y podras acceder a MySQL server usando: mysql -u root -p sin problemas.
Posts similares:
MySQL como cambiar / asignar la contraseña inicial
MySQL | Adding new user accounts to MySQL server