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

Índice
  1. Introducción
  • Prerrequisitos
  • Paso 1: Identificar la versión de la base de datos y detener el servidor
  • Paso 2: Reiniciar el servidor de base de datos sin comprobar permisos
    1. Configuración de MariaDB para iniciarse sin tablas de concesión
    2. Configuración de MySQL para iniciarse sin tablas de concesión
  • Paso 3: Cambiar la contraseña raíz
    1. Cambiar la contraseña de MariaDB
    2. Cambiar la contraseña de MySQL
  • Paso 4: Revertir el servidor de base de datos a la configuración normal
  • Conclusión
  • El autor seleccionó el Fondo de Ayuda COVID-19 para recibir una donación como parte del programa Write for DOnations .

    Introducción

    ¿Olvidó la contraseña de su base de datos? Nos pasa a todos. Si olvidó o perdió la contraseña raíz de su base de datos MySQL o MariaDB, aún puede obtener acceso y restablecer la contraseña si tiene acceso al servidor y una cuenta de usuario con sudoprivilegios.

    Este tutorial demuestra cómo restablecer la contraseña de root para bases de datos MySQL y MariaDB instaladas con el aptadministrador de paquetes en Ubuntu 20.04. El procedimiento para cambiar la contraseña de root difiere según si tiene MySQL o MariaDB instalado y la configuración predeterminada de systemd que viene con la distribución o los paquetes de otros proveedores. Si bien las instrucciones de este tutorial pueden funcionar con otras versiones del sistema o del servidor de bases de datos, se han probado con Ubuntu 20.04 y los paquetes provistos por la distribución.

    Nota: En las nuevas instalaciones de Ubuntu 20.04, la configuración predeterminada de MySQL o MariaDB generalmente le permite acceder a la base de datos (con privilegios administrativos completos) sin proporcionar una contraseña siempre que realice la conexión desde la cuenta raíz del sistema . En este escenario, es posible que no sea necesario restablecer la contraseña. Antes de continuar con el restablecimiento de la contraseña raíz de la base de datos , intente acceder a la base de datos con el sudo mysqlcomando. Solo si se modificó la configuración predeterminada para la autenticación y esto da como resultado un error de acceso denegado , siga los pasos de este tutorial.

    Prerrequisitos

    Para recuperar su contraseña root de MySQL o MariaDB , necesitará:

    • Acceso al servidor Ubuntu 20.04 que ejecuta MySQL o MariaDB con un usuario sudo u otra forma de acceder al servidor con privilegios de root.

    • Para probar los métodos de recuperación de este tutorial sin afectar el servidor de producción, cree un servidor de prueba y luego siga nuestro tutorial de configuración inicial del servidor . Asegúrese de crear un usuario normal, no root, con privilegios sudo. Luego instale MySQL siguiendo nuestra guía sobre Cómo instalar MySQL en Ubuntu 20.04 o instale MariaDB siguiendo Cómo instalar MariaDB en Ubuntu 20.04 .

    Nota: Ambas guías de instalación de bases de datos conservan la configuración predeterminada para la cuenta raíz de la base de datos , donde no se necesita una contraseña para autenticarse, siempre que pueda acceder a la cuenta raíz del sistema . Puede seguir esta guía para configurar y verificar una nueva contraseña.

    Paso 1: Identificar la versión de la base de datos y detener el servidor

    Ubuntu 20.04 ejecuta MySQL o MariaDB, un popular reemplazo directo que es totalmente compatible con MySQL. Deberá usar diferentes comandos para recuperar la rootcontraseña según cuál de estos tenga instalado, así que siga los pasos de esta sección para determinar qué servidor de base de datos está ejecutando.

    Comprueba tu versión con el siguiente comando:

    1. mysql --version

    Si está ejecutando MariaDB, verá “MariaDB” precedido por el número de versión en la salida:

    MariaDB outputmysql  Ver 15.1 Distrib 10.3.25-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2

    Verá un resultado como este si está ejecutando MySQL:

    MySQL outputmysql  Ver 8.0.22-0ubuntu0.20.04.3 for Linux on x86_64 ((Ubuntu))

    Tenga en cuenta la base de datos que está ejecutando. Esto determinará los comandos adecuados que debe seguir en el resto de este tutorial.

    Para cambiar la contraseña de root , deberá apagar el servidor de base de datos. Si está ejecutando MariaDB, puede hacerlo con el siguiente comando:

    1. sudo systemctl stop mariadb

    Para MySQL, apague el servidor de base de datos ejecutando:

    1. sudo systemctl stop mysql

    Con la base de datos detenida, puedes reiniciarla en modo seguro para restablecer la contraseña root.

    Paso 2: Reiniciar el servidor de base de datos sin comprobar permisos

    Ejecutar MySQL y MariaDB sin verificación de permisos permite acceder a la línea de comandos de la base de datos con privilegios de root sin proporcionar una contraseña válida. Para ello, debe evitar que la base de datos cargue las tablas de concesión , que almacenan información sobre los privilegios del usuario. Dado que esto supone un pequeño riesgo para la seguridad, es posible que también desee deshabilitar la red para evitar que otros clientes se conecten al servidor vulnerable temporalmente.

    Dependiendo del servidor de base de datos que haya instalado, la forma de iniciar el servidor sin cargar las tablas de concesión varía.

    Configuración de MariaDB para iniciarse sin tablas de concesión

    Para iniciar el servidor MariaDB sin las tablas de concesión, utilizaremos el systemdarchivo de unidad para establecer parámetros adicionales para el demonio del servidor MariaDB.

    Ejecute el siguiente comando, que establece la variable de entorno MYSQLD_OPTS que utiliza MariaDB al iniciarse. Las opciones --skip-grant-tablesy --skip-networkingindican a MariaDB que se inicie sin cargar las tablas de concesión ni las funciones de red:

    1. sudo systemctl set-environment MYSQLD_OPTS="--skip-grant-tables --skip-networking"

    A continuación, inicie el servidor MariaDB:

    1. sudo systemctl start mariadb

    Este comando no producirá ninguna salida, pero reiniciará el servidor de base de datos, teniendo en cuenta la nueva configuración de la variable de entorno.

    Puedes asegurarte de que empezó con sudo systemctl status mariadb.

    Ahora debería poder conectarse a la base de datos como usuario raíz de MariaDB sin proporcionar una contraseña:

    1. sudo mysql -u root

    Verá inmediatamente un indicador de shell de base de datos:

    Ahora que tiene acceso al servidor de base de datos, puede cambiar la contraseña root como se muestra en el Paso 3.

    Configuración de MySQL para iniciarse sin tablas de concesión

    Para iniciar el servidor MySQL sin sus tablas de concesión, deberá modificar la configuración de systemd para MySQL para pasar parámetros de línea de comandos adicionales al servidor al iniciarse.

    Para ello, ejecute el siguiente comando:

    1. sudo systemctl edit mysql

    Este comando abrirá un nuevo archivo en el nanoeditor, que utilizará para editar las modificaciones de servicio de MySQL . Estas modifican los parámetros de servicio predeterminados de MySQL.

    Este archivo estará vacío. Agregue el siguiente contenido:

    Anulaciones del servicio MySQL

    [Service]ExecStart=ExecStart=/usr/sbin/mysqld --skip-grant-tables --skip-networking

    La primera ExecStartdeclaración borra el valor predeterminado, mientras que la segunda proporciona systemdel nuevo comando de inicio, incluidos parámetros para deshabilitar la carga de las tablas de concesión y las capacidades de red.

    Presione CTRL-xpara salir del archivo, luego Ypara guardar los cambios realizados y luego ENTERpara confirmar el nombre del archivo.

    Recargue la systemdconfiguración para aplicar estos cambios:

    1. sudo systemctl daemon-reload

    Ahora inicie el servidor MySQL:

    1. sudo systemctl start mysql

    El comando no mostrará ningún resultado, pero el servidor de base de datos se iniciará. Las tablas de concesión y la red no se habilitarán.

    Conéctese a la base de datos como usuario root:

    1. sudo mysql -u root

    Verá inmediatamente un indicador de shell de base de datos:

    Ahora que tienes acceso al servidor, puedes cambiar la contraseña root .

    Paso 3: Cambiar la contraseña raíz

    El servidor de base de datos ahora se ejecuta en un modo limitado; las tablas de concesión no están cargadas y no hay compatibilidad con redes habilitada. Esto le permite acceder al servidor sin proporcionar una contraseña, pero le prohíbe ejecutar comandos que alteren los datos. Para restablecer la contraseña raíz , debe cargar las tablas de concesión ahora que obtuvo acceso al servidor.

    Indique al servidor de base de datos que vuelva a cargar las tablas de concesión emitiendo el FLUSH PRIVILEGEScomando:

    1. FLUSH PRIVILEGES;

    Ahora puedes cambiar la contraseña de root . El método que utilices dependerá de si estás usando MariaDB o MySQL.

    Cambiar la contraseña de MariaDB

    Si está utilizando MariaDB, ejecute la siguiente declaración para establecer la contraseña de la cuenta raíz , asegurándose de reemplazarla new_passwordcon una contraseña nueva y segura que pueda recordar:

    1. ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';

    Verá este resultado indicando que la contraseña cambió:

    OutputQuery OK, 0 rows affected (0.001 sec)

    MariaDB permite utilizar mecanismos de autenticación personalizados, así que ejecute las siguientes dos instrucciones para asegurarse de que MariaDB utilizará su mecanismo de autenticación predeterminado para la nueva contraseña que asignó a la cuenta raíz :

    1. UPDATE mysql.user SET authentication_string = '' WHERE user = 'root';
    2. UPDATE mysql.user SET plugin = '' WHERE user = 'root';

    Verá el siguiente resultado para cada declaración:

    OutputQuery OK, 0 rows affected (0.01 sec)

    La contraseña ya ha cambiado. Escriba exitpara salir de la consola MariaDB y continúe con el paso 4 para reiniciar el servidor de base de datos en modo normal.

    Cambiar la contraseña de MySQL

    Para MySQL, ejecute la siguiente declaración para cambiar la contraseña del usuario rootnew_password y reemplazarla por una contraseña segura que pueda recordar. MySQL permite el uso de mecanismos de autenticación personalizados, por lo que la siguiente declaración también garantiza que MySQL utilizará su mecanismo de autenticación predeterminado para autenticar al usuario root con la nueva contraseña:

    1. ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'new_password';

    Verá este resultado indicando que la contraseña se cambió correctamente:

    OutputQuery OK, 0 rows affected (0.01 sec)

    La contraseña ya ha cambiado. Salga de la consola MySQL escribiendo exit.

    Reiniciaremos la base de datos en modo operativo normal.

    Paso 4: Revertir el servidor de base de datos a la configuración normal

    Para reiniciar el servidor de base de datos en su modo normal, debe revertir los cambios que realizó para que se habiliten las redes y se carguen las tablas de concesión. Nuevamente, el método que utilice depende de si utilizó MariaDB o MySQL.

    Para MariaDB, anule la MYSQLD_OPTSvariable de entorno que configuró anteriormente:

    1. sudo systemctl unset-environment MYSQLD_OPTS

    Luego, reinicie el servicio usando systemctl:

    1. sudo systemctl restart mariadb

    Para MySQL, elimine la configuración systemd modificada:

    1. sudo systemctl revert mysql

    Verá un resultado similar al siguiente:

    OutputRemoved /etc/systemd/system/mysql.service.d/override.conf.Removed /etc/systemd/system/mysql.service.d.

    Luego, vuelva a cargar la configuración de systemd para aplicar los cambios:

    1. sudo systemctl daemon-reload

    Por último, reinicie el servicio:

    1. sudo systemctl restart mysql

    Ahora la base de datos se ha reiniciado y ha vuelto a su estado normal. Confirme que la nueva contraseña funciona iniciando sesión como usuario root con una contraseña:

    1. mysql -u root -p

    Se le solicitará una contraseña. Ingrese su nueva contraseña y obtendrá acceso a la solicitud de la base de datos como se espera.

    Conclusión

    Ha restaurado el acceso administrativo al servidor MySQL o MariaDB. Asegúrese de que la nueva contraseña que eligió sea segura y guárdela en un lugar seguro.

    Para obtener más información sobre la gestión de usuarios, los mecanismos de autenticación o las formas de restablecer las contraseñas de las bases de datos para otras versiones de MySQL o MariaDB, consulte la documentación oficial de MySQL o la documentación de MariaDB .

    SUSCRÍBETE A NUESTRO BOLETÍN 
    No te pierdas de nuestro contenido ni de ninguna de nuestras guías para que puedas avanzar en los juegos que más te gustan.

    Deja una respuesta

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

    Subir

    Este sitio web utiliza cookies para mejorar tu experiencia mientras navegas por él. Este sitio web utiliza cookies para mejorar tu experiencia de usuario. Al continuar navegando, aceptas su uso. Mas informacion