Cómo restablecer la contraseña raíz de MySQL o MariaDB

Introducción
A todos nos pasa que olvidamos las contraseñas. Si olvidas o pierdes la contraseña raíz de tu base de datos MySQL o MariaDB, aún puedes obtener acceso y restablecer la contraseña si tienes acceso al servidor y una sudo
cuenta de usuario habilitada.
Este tutorial cubrirá cómo restablecer la contraseña root para versiones anteriores y nuevas de MySQL y MariaDB.
Prerrequisitos
Para recuperar su contraseña raíz de MySQL/MariaDB, necesitará:
- Acceso al servidor Linux MySQL o MariaDB con un usuario sudo.
Paso 1: Identificación de la versión de la base de datos
La mayoría de las distribuciones modernas de Linux incluyen MySQL o MariaDB, un reemplazo directo popular que es totalmente compatible con MySQL. Según la base de datos utilizada y su versión, debe utilizar diferentes comandos para recuperar la contraseña de root.
Puedes comprobar tu versión con el siguiente comando:
mysql --version
Verás una salida como ésta con MySQL:
MySQL outputmysql Ver 14.14 Distrib 5.7.16, for Linux (x86_64) using EditLine wrapper
O una salida como esta para MariaDB:
MariaDB outputmysql Ver 15.1 Distrib 5.5.52-MariaDB, for Linux (x86_64) using readline 5.1
Tenga en cuenta qué base de datos y versión está ejecutando, ya que las utilizará más adelante. A continuación, debe detener la base de datos para acceder a ella manualmente.
Paso 2: Detener el servidor de base de datos
Para cambiar la contraseña root, primero debe apagar el servidor de base de datos.
Puedes hacer esto para MySQL con:
sudo systemctl stop mysql
Y para MariaDB con:
sudo systemctl stop mariadb
Una vez detenido el servidor de base de datos, podrás acceder a él manualmente para restablecer la contraseña root.
Paso 3: Reiniciar el servidor de base de datos sin comprobar los permisos
Si ejecuta MySQL y MariaDB sin cargar información sobre los privilegios de usuario, puede acceder a la línea de comandos de la base de datos con privilegios de root sin proporcionar una contraseña. Esto le permitirá obtener acceso a la base de datos sin saberlo.
Para ello, debe impedir que la base de datos cargue las tablas de concesión, que almacenan información sobre los privilegios de los usuarios. Como esto supone un pequeño riesgo para la seguridad, también debe omitir la conexión en red para evitar que otros clientes se conecten.
Inicie la base de datos sin cargar las tablas de concesión ni habilitar la red:
sudo mysqld_safe --skip-grant-tables --skip-networking
El signo al final de este comando hará que este proceso se ejecute en segundo plano para que pueda seguir usando su terminal.
Ahora, puede conectarse a la base de datos como usuario root, lo que no debería requerir una contraseña.
mysql -u root
En su lugar, verás inmediatamente un indicador de shell de base de datos.
Indicador de MySQL
Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.mysql
Indicador de MariaDB
Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.MariaDB [(none)]
Ahora que tiene acceso root, puede cambiar la contraseña root.
Paso 4: Cambiar la contraseña raíz
Una forma sencilla de cambiar la contraseña de root en las versiones modernas de MySQL es mediante el ALTER USER
comando . Sin embargo, este comando no funcionará en este momento porque las tablas de concesión no están cargadas.
Digámosle al servidor de base de datos que recargue las tablas de concesión emitiendo el FLUSH PRIVILEGES
comando.
- FLUSH PRIVILEGES;
Ahora podemos cambiar la contraseña root.
Utilice el siguiente comando para MySQL 5.7.6 y versiones más recientes y MariaDB 10.1.20 y versiones más recientes .
- ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
Para MySQL 5.7.5 y anteriores, así como MariaDB 10.1.20 y anteriores, utilice:
- SET PASSWORD FOR 'root'@'localhost' = PASSWORD('new_password');
Asegúrese de reemplazarla new_password
con su nueva contraseña elegida.
Nota : Si el ALTER USER
comando no funciona, generalmente es señal de un problema mayor. Sin embargo, puedes intentar UPDATE ... SET
restablecer la contraseña de root.
- UPDATE mysql.user SET authentication_string = PASSWORD('new_password') WHERE User = 'root' AND Host = 'localhost';
Recuerde volver a cargar las tablas de subvenciones después de esto.
En cualquier caso, debería ver la confirmación de que el comando se ha ejecutado correctamente.
OutputQuery OK, 0 rows affected (0.00 sec)
Se ha cambiado la contraseña, por lo que ahora puedes detener la instancia manual del servidor de base de datos y reiniciarlo como estaba antes.
Paso 5: reinicie el servidor de base de datos normalmente
En primer lugar, detenga la instancia del servidor de base de datos que inició manualmente en el paso 3. Este comando busca el PID o ID de proceso del proceso MySQL o MariaDB y envía SIGTERM
un mensaje para indicarle que salga sin problemas después de realizar operaciones de limpieza. Puede obtener más información en este tutorial de administración de procesos de Linux.
Para MySQL, utilice:
sudo kill `cat /var/run/mysqld/mysqld.pid`
Para MariaDB, utilice:
sudo kill `/var/run/mariadb/mariadb.pid`
Luego, reinicie el servicio utilizando systemctl
.
Para MySQL, utilice:
sudo systemctl start mysql
Para MariaDB, utilice:
sudo systemctl start mariadb
Ahora puedes confirmar que la nueva contraseña se ha aplicado correctamente ejecutando:
mysql -u root -p
El comando ahora debería solicitar la contraseña recién asignada. Introdúzcala y debería obtener acceso al indicador de la base de datos como se esperaba.
Conclusión
Ahora tiene acceso administrativo al servidor MySQL o MariaDB restaurado. Asegúrese de que la nueva contraseña raíz que elija sea segura y guárdela en un lugar seguro.
Deja una respuesta