Cómo resetear la contraseña de root de MySQL 5.7

En este post os explico cómo podéis resetear la contraseña del usuario root, en casa de pérdida u olvido y que por lo tanto, a no ser que tuvieseis otro usuario, no podéis entrar en el cli de mysql, para administrar vuestras bases de datos.

Los pasos a seguir son los siguientes:

0. Convertirnos en root:

# su -

1. Parar el servicio mysqld:
# systemctl stop mysqld

2. Establecer las siguientes variables de entorno de MySQL:
# systemctl set-environment MYSQLD_OPTS="--skip-grant-tables"

3. Volver a arrancar el servicio mysqld, pero esta vez cargará las variables que le hemos aplicado:
# systemctl start mysqld

4. Iniciar sesión cómo root (sin contraseña):
# mysql -u root

5. Actualizar la contraseña del usuario root de mysql con la siguiente sentencia SQL:
mysql> UPDATE mysql.user SET authentication_string = PASSWORD('MyNewPassword') WHERE User = 'root' AND Host = 'localhost';
mysql> FLUSH PRIVILEGES;
mysql> quit


6. Actualizar la contraseña del usuario root y conexión «localhost»:
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';

7. Parar de nuevo el servicio mysqld:
# systemctl stop mysqld

7. Quitar las variables de entorno añadidas con anterioridad:
# systemctl unset-environment MYSQLD_OPTS

8. Volver a arrancar el servicio mysqld, pero esta vez sin las variables de entorno de antes:
# systemctl start mysqld

7. Si todo lo hemos hecho bien, podremos volver a entrar a la cli de mysql y administrar nuestras bases de datos con normalidad:
# mysql -u root -p

Fuente oficial: https://stackoverflow.com/questions/33510184/how-to-change-the-mysql-root-account-password-on-centos7

Un saludo Sysadmins! 🙂

Deja un comentario