Home Linux Perdida contraseña root de MYSQL en Ubuntu

Perdida contraseña root de MYSQL en Ubuntu

by José Luis Sánchez Borque

A quien no le ha pasado………. Esta frase debería estar prohibida dentro del vocabulario de los administradores de sistemas en general, y de los Sistemas Gestores de bases de datos en particular.. Pero, sí, a mi también me ha pasado olvidar la contraseña de acceso a un Gestor de Bases de datos y no tenerla documentada.

Resetear la contraseña del usuario root de mySQL

El siguiente procedimiento está hecho para un UBuntu 18.04 bionic

root@ugsuite:~# lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 18.04.2 LTS
Release: 18.04
Codename: bionic

En primer lugar pararemos el servicio:

$sudo service mysql stop

A continuación crearemos en el directorio /var/run el archivo mysql que utilizará el proceso mysql cuando lo arranquemos posteriormente. Necesita de ese archivo para arrancar /var/run/mysql. Cambiaremos la pertenencia de usuario y grupo del archivo al que utiliza el servicio mysqld para ejecutarse, normalmente el usuario y grupo es mysql. Podría ser diferente al que os pongo.. Pero podemos saberlo de la siguiente manera:

root@ugsuite:~# ps axo user,pid,comm | grep mysql
mysql 4377 mysqld

Si ya lo tenemos claro lo utilizamos en la siguiente orden con el comando chmod:

# mkdir -p /var/run/mysqld 
# chown mysql:mysql /var/run/mysqld

Ahora arrancamos mysql con los parámetros --skip-grant-tables y --skip-networking. Ojo el ‘&’ al final es necesario.

# /usr/sbin/mysqld --skip-grant-tables --skip-networking &
# [1] 4703

El parámetro --skip-grant-tables permite a cualquiera conectarse sin contraseña y con todos los privilegios. Como es un proceso peligroso mientras dura le añadimos el parámetro --skip-networking , lo que deshabilita la posibilidad de conexiones remotas al servidor mysql mientras cambiamos el password.

Una vez puesto en marcha el proceso, bastará con ejecutar los siguientes comandos. He quitado el texto informativo que va apareciendo al ejecutar alguno de dichos comandos para claridad del texto:

# mysql -u root
Welcome.....
............
mysql>
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)
Next, reset root password. The following commands will reset MySQL root password to linuxconfig.org:
mysql> USE mysql;
Database changed
mysql> UPDATE user SET authentication_string=PASSWORD("TU-CONTRASEÑA") WHERE User='root';
Query OK, 0 rows affected, 1 warning (0.00 sec)
Rows matched: 1 Changed: 0 Warnings: 1
mysql> UPDATE user SET plugin="mysql_native_password" WHERE User='root';
Query OK, 0 rows affected (0.00 sec)
Rows matched: 1 Changed: 0 Warnings: 0
Quit MySQL session:
mysql> quit
Bye
#

O también lo podemos hacer directamente con Update

UPDATE mysql.user SET Password=PASSWORD('new-password') WHERE User='root';
FLUSH PRIVILEGES;
exit;

Ahora solo nos queda matar el proceso del mysql que hemos arrancado y volver a arrancar el daemon del mysql:

# pkill mysqld
# service mysql start

Podemos validar que está cambiada y tenemos acceso de la siguiente manera:

$ mysql -u root --password=TU-CONTRASEÑA 
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 4
Server version: 5.7.22-nft (Ubuntu)

Copyright (c) 2000, 2018, 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>

Recuerda que si te ha pasado lo mismo con el SQL puedes consultar este POST: Perdida contraseña root de MYSQL en Ubuntu

Espero que os sirve para sacaros de un apuro. 

 

 

 

You may also like

Leave a Comment