Introducción
En este tutorial, le mostraremos cómo restablecer (o cambiar) una contraseña de root de MySQL en caso de que la haya olvidado. Esta guía debería funcionar con cualquier distribución de Linux moderna, como Ubuntu 18.04 y CentOS 8.
Prerrequisitos
Antes de continuar con los pasos a continuación, asegúrese de haber iniciado sesión en el servidor como usuario con privilegios de sudo.
Si desea continuar en un servidor remoto, continúe leyendo; de lo contrario, si trabaja en su computadora local, omita el primer párrafo "Conexión al servidor" y lea el siguiente.
Conexión al servidor
Para acceder al servidor, necesita conocer la dirección IP. También necesitará su nombre de usuario y contraseña para la autenticación. Para conectarse al servidor como root, escriba el siguiente comando:
ssh root@IP_DEL_SERVER
A continuación, deberá ingresar la contraseña del usuario root.
Si no está utilizando el usuario root, puede iniciar sesión con otro nombre de usuario utilizando el mismo comando, luego cambie root a su nombre de usuario:
ssh nome_utente@IP_DEL_SERVER
Luego se le pedirá que ingrese su contraseña de usuario.
El puerto estándar para conectarse a través de ssh es 22, si su servidor usa un puerto diferente, deberá especificarlo usando el parámetro -p, luego escriba el siguiente comando:
ssh nome_utente@IP_DEL_SERVER -p PORTA
Identificar la versión del servidor
Dependiendo de la versión del servidor MySQL o MariaDB que se esté ejecutando en su sistema, necesitará usar diferentes comandos para recuperar la contraseña de root.
Puede encontrar la versión de su servidor emitiendo el siguiente comando:
mysql --version
Si tiene MySQL instalado en su sistema, la salida se verá así:
mysql Ver 14.14 Distrib 5.7.22, for Linux (x86_64) using EditLine wrapper
Si tiene MariaDB instalado, debería recibir un mensaje similar a este:
mysql Ver 15.1 Distrib 10.1.33-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2
Asegúrese de anotar qué versión de MySQL o MariaDB está utilizando.
Restablecer la contraseña raíz de MySQL o MariaDB
Siga estos pasos para restablecer la contraseña raíz de MySQL /MariaDB:
Para cambiar la contraseña de root, primero debemos detener el servidor MySQL. Para hacer esto, escriba el siguiente comando:
sudo systemctl stop mysql
Inicie el servidor MySQL /MariaDB sin cargar las tablas. Cuando la --skip-grant-tables
está habilitada, cualquiera puede conectarse al servidor de la base de datos sin una contraseña y con todos los privilegios.
Para iniciar el servidor de la base de datos sin cargar las tablas de autorización:
sudo mysqld_safe --skip-grant-tables &
El ampersand &
al final del comando anterior hará que el programa se ejecute en segundo plano, por lo que podemos continuar usando el shell.
Attentiome: Si obtiene el siguiente error mysqld_safe Directory '/var/run/mysqld' for UNIX socket file don't exists
pruebe los siguientes comandos; de lo contrario, vaya al siguiente párrafo.
mkdir -p /var/run/mysqld
chown mysql:mysql /var/run/mysqld
Luego intente iniciar el servidor de base de datos nuevamente sin cargar las tablas de permisos:
sudo mysqld_safe --skip-grant-tables &
Conexión a la base de datos sin contraseña
Después de reiniciar la base de datos sin cargar las tablas de permisos, puede conectarse al servidor como root sin que se le solicite la contraseña:
mysql -u root
Dado que la administración de cuentas está deshabilitada cuando el servicio se inicia con la --skip-grant-tables
, necesitamos recargar las concesiones. De esta forma podemos cambiar la contraseña más tarde:
FLUSH PRIVILEGES;
Establecer una nueva contraseña de root
Ejecute los siguientes comandos si tiene MySQL 5.7.6 y posterior o MariaDB 10.1.20 y posterior:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'MY_NEW_PASSWORD';
FLUSH PRIVILEGES;
Advertencia: Si la ALTER USER
no funciona para usted, pruebe los siguientes comandos:
use mysql;
update user SET PASSWORD=PASSWORD("MY_NEW_PASSWORD") WHERE USER='root';
FLUSH PRIVILEGES;
exit;
Ejecute los siguientes comandos si tiene MySQL 5.7.5 y anterior o MariaDB 10.1.20 y anterior:
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MY_NEW_PASSWORD');
FLUSH PRIVILEGES;
De cualquier manera, con suerte, debería ver el siguiente resultado:
Query OK, 0 rows affected (0.00 sec)
exit;
Detenga e inicie el servidor de la base de datos normalmente
Ahora que la contraseña de root está configurada, necesitaremos detener el servidor de la base de datos e iniciarlo normalmente.
Detenga el servidor de la base de datos de administración con el siguiente comando:
mysqladmin -u root -p shutdown
Se le pedirá la nueva contraseña de root.
Ahora inicie el servidor de la base de datos normalmente:
- Para MySQL, escriba:
sudo systemctl start mysql
- Para MariaDB, escriba:
sudo systemctl start mariadb
Comprobar la contraseña
Para verificar que la nueva contraseña de root se haya aplicado correctamente, escriba:
sudo mysql -u root -p
Se le pedirá que ingrese la nueva contraseña de root. Ingrese y debería iniciar sesión en su servidor de base de datos.
Conclusión
En este tutorial, ha aprendido a restablecer la contraseña raíz de MySQL o MariaDB. Asegúrese de que su nueva contraseña de root sea segura y guárdela en un lugar seguro.