Cambiar el password del usuario root de MySQL

En esta entrada conoceremos la forma en que se define una contraseña para el usuario root de una base de datos MySQL o MaríaDB

Lo que se muestra aquí ocurre bajo dos escenarios:

  1. Conocemos la contraseña actual del usuario root
  2. Desconocemos o hemos perdido la contraseña del usuario root

Para el primer caso, no hay mayor problema que ejecutar una sentencia, sin embargo, para el segundo caso será necesario tener privilegios de administrador del sistema operativo que aloja el servidor de base de datos

Escenario 1.- Conocemos la contraseña actual

1.- Iniciar sesión en el servidor de base de datos como root:

mysql -u root -p

2.- Seleccionar la BD, donde se aloja la tabla de usuarios:

use mysql;

3.- Actualizar la tabla user que almacena los datos de los usuarios:

update user set password=PASSWORD('ContraseñaNueva') where user='root';

En caso de que tengamos el usuario root con host’s distintos, podremos especificarlo en la instrucción anterior:

update user set password=PASSWORD('ContraseñaNueva') where user='root' and host = 'localhost';

4.- Aplicamos los cambios:

flush privileges;

5.- Salimos:

exit

6.- Establecemos nuevamente la conexión con la contraseña que hemos asignado:

mysql -u root -p

Escenario 2.- Desconocemos la contraseña actual y queremos asignarle una

Para este escenario es necesario que tengas privilegios de administrador para poder ejecutar las instrucciones.

1.- Detener el servicio mysql

$ sudo service mysqld stop

2.- Iniciar mysql en ‘modo seguro’ para evitar que nos solicite la contraseña de root

$ sudo mysqld_safe --skip-grant-tables &

3.- Introducir el comando para iniciar sesión como root

$ mysql -u root

4.- Seleccionar la Base de datos

use mysql;

5.- Actualizamos el campo para cambiar la contraseña del usuario root

UPDATE user SET password=PASSWORD('nuevo_pass') WHERE user='root';

6.- Actualizar los privilegios

flush privileges;

7.- Salimos

exit

8.- Detenemos el servicio y lo iniciamos nuevamente.

service mysqld stop

service mysqld start

9.- Ingresamos nuevamente con la contraseña que hemos elegido, para probar la conexión:

$ mysql -u root -p

Consideraciones

Un error que podría ocurrir es que intentes restablecer la contraseña y el motor de BD te identifique como una conexión TCP/IP, por lo que deberás desactivar la opción y que solo te reconozca como socket, para lo cual, deberás agregar –skip-networking:

mysqld_safe --skip-grant-tables --skip-networking &

--skip-networking deja de escuchar (LISTEN) conexiones TCP/IP provenientes de la red, por lo que MySQL trabajará en un ambiente totalmente local. 

Al momento de actualizar la contraseña, el password deberá ir entre los paréntesis, para que el motor de la base de datos, encripte la contraseña y la almacene de esta forma y no en texto plano.

Correcto

UPDATE user SET password=PASSWORD('nuevo_pass') WHERE user='root';

Incorrecto

UPDATE user SET password='nuevo_pass' WHERE user='root';

Esto haría que la contraseña se almacene en texto plano y no pueda ser leída como debería, por lo que nos devolvería un error al intentar autenticarnos.

Referencias externas:

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *