Explicamos cómo resetear/restablecer la contraseña del usuario root para el motor de base de datos MySQL 8 sobre un equipo con Linux CentOS 7. Algo habitual es perder la contraseña de acceso del superusuario root de MySQL, en este truco explicamos cómo cambiar la contraseña o establecer una nueva para este usuario sin conocer la actual. Lo explicamos para MySQL Community Server en su versión 8.0.15, instalado en un equipo con el sistema operativo Linux CentOS 7 Minimal.

Requisitos para restablecer o resetear la contraseña del usuario root de MySQL 8 en Linux CentOS 7

Necesitaremos disponer de acceso a la consola de Linux con un usuario administrador (a ser posible el superusuario root de Linux).

Aunque para el artículo usamos la versión de Linux CentoOS 7, es válido para otras distribuciones de Linux y versiones de CentOS, solo hay que modificar el comando que inicia y detiene los servicios por el correspondiente para la distribución.

El servidor Linux tendrá instalada la versión 8 o superior de MySQL, motor de base de datos gratuito, para versiones inferiores de MySQL el proceso es muy similar.

Restablecer contraseña usuario root de MySQL 8 en Linux CentOS 7

En primer lugar accederemos a la consola (shell) del equipo Linux con un usuario con privilegios suficientes. Desde ahí comprobaremos que el servicio de MySQL está iniciado con el comando:

systemctl status mysqld

Nos devolverá:

systemctl status mysqld
mysqld.service – MySQL Server
Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
Active: active (running) since jue 2020-01-23 13:44:21 CET; 14min ago
Docs: man:mysqld(8)
http://dev.mysql.com/doc/refman/en/using-systemd.html
Process: 4518 ExecStartPre=/usr/bin/mysqld_pre_systemd (code=exited, status=0/SUCCESS)
Main PID: 4535 (mysqld)
Status: «SERVER_OPERATING»
CGroup: /system.slice/mysqld.service
4535 /usr/sbin/mysqld
ene 23 13:44:21 servidor_web systemd[1]: Starting MySQL Server…
ene 23 13:44:21 servidor_web systemd[1]: Started MySQL Server.

El servicio de MySQL estará iniciado por lo que ejecutaremos el siguiente comando para detenerlo:

systemctl stop mysqld

Restablecer contraseña usuario root de MySQL 8 en Linux CentOS 7

A continuación iniciaremos el servicio de MySQL en un modo especial que permite el acceso sin contraseña, para ello añadiremos las siguientes variables de inicio con el comando:

systemctl set-environment MYSQLD_OPTS=»–skip-grant-tables»

Restablecer contraseña usuario root de MySQL 8 en Linux CentOS 7

Iniciaremos el servicio de MySQL:

systemctl start mysqld

Y accederemos a la consola de gestión de MySQL con el comando:

mysql -u root

Restablecer contraseña usuario root de MySQL 8 en Linux CentOS 7

Accederemos a la base de datos (catálogo) «mysql» con el comando:

use mysql;

Mostraremos los usuarios de MySQL con la siguiente sentencia SQL, que puede ejecutarse directamente en la consola de MySQL:

select user, host from user;

Restablecer contraseña usuario root de MySQL 8 en Linux CentOS 7

Vaciaremos la contraseña para el usuario «root» y el host «localhost«, para ello ejecutaremos la siguiente sentencia SQL:

update user set authentication_string = ‘ ‘ where user = ‘root’;

flush privileges;

Restablecer contraseña usuario root de MySQL 8 en Linux CentOS 7

Cerraremos la sesión de MySQL con:

exit

Detendremos el servicio de MySQL con:

systemctl stop mysqld

Restablecer contraseña usuario root de MySQL 8 en Linux CentOS 7

Volveremos a dejar las variables de inicio de MySQL a su estado normal con:

systemctl set-environment MYSQLD_OPTS=» «

Iniciaremos el servicio de MySQL en modo normal:

systemctl start mysqld

Restablecer contraseña usuario root de MySQL 8 en Linux CentOS 7

A continuación, puesto que hemos dejado al usuario root sin contraseña, accederemos a la consola de administración de MySQL con el comando:

mysql -u root

Y estableceremos la contraseña definitiva para el usuario root desde localhost con el comando MySQL:

alter user ‘root’@’localhost’ identified by ‘nueva contraseña’;

y el comando:

flush privileges;

Restablecer contraseña usuario root de MySQL 8 en Linux CentOS 7

Cerraremos conexión con MySQL:

exit

Y ya habremos cambiado la contraseña para el usuario root de MySQL. Si queremos volver a acceder a MySQL introduciremos el comando:

mysql -u root -p

Nos solicitará la contraseña para el usuario root en localhost, que será la que hayamos establecido. Ya podremos ejecutar cualquier comando como superusuario de MySQL:

Restablecer contraseña usuario root de MySQL 8 en Linux CentOS 7