¿Como cambiar la contraseña de root en MySQL?

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:

Linux console | jpacheco@aex-infra ~
[jpacheco@aex-infra ~]$ mysql -u jpacheco -p
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

Linux console | jpacheco@aex-infra ~
[jpacheco@aex-infra ~]$ su
Password:
[root@aex-infra jpacheco]#

2. Ahora hay que detener el servicio MySQL Server

Linux console | root@aex-infra /
[root@aex-infra jpacheco]# systemctl stop mysqld.service

3. A continuación, arrancaremos MySQL en modo seguro usando: safe_mysqld --skip-grant-tables“.

Linux console | root@aex-infra /
[root@aex-infra jpacheco]# 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

Linux console | root@aex-infra /
[root@aex-infra ~]# 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.

Linux console | root@aex-infra /
mysql> UPDATE mysql.user SET Password=PASSWORD(‘contraseña‘) WHERE User=’root’;
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.

Linux console | root@aex-infra /
mysql> FLUSH PRIVILEGES;
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)

Linux console | root@aex-infra /
[root@aex-infra ~]# kill $(cat /var/run/mysqld/mysqld.pid)

En la otra consola nos aparecera un mensaje confirmando que MySQL se ha detenido.

Linux console | root@aex-infra /
[root@aex-infra jpacheco]# 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
140906 13:51:19 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended

7. Arrancamos MySQL server.

Linux console | root@aex-infra /
[root@aex-infra jpacheco]# systemctl start mysqld.service

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

Leave a Reply

Your email address will not be published. Required fields are marked *

Time limit is exhausted. Please reload the CAPTCHA.