El autor seleccionó el Fondo de Ayuda COVID-19 para recibir una donación como parte del programa Write for DOnations.
Introducción
¿Olvidaste la contraseña de tu base de datos? Nos pasa a los mejores. Si ha olvidado o perdido elraízcontraseña a 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 consudo
privilegios
Este tutorial demuestra cómo restablecer elraízcontraseña para las bases de datos MySQL y MariaDB instaladas con elapto
administrador de paquetes en Ubuntu 20.04. El procedimiento para cambiar la contraseña raíz difiere dependiendo de si tiene instalado MySQL o MariaDB y la configuración predeterminada de systemd que se incluye 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 la base de datos, se probaron con Ubuntu 20.04 y paquetes proporcionados por la distribución.
Nota:En las instalaciones nuevas 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 el sistema.raízcuenta. En este escenario, puede que no sea necesario restablecer la contraseña. Antes de continuar con el restablecimiento de su base de datosraízcontraseña, intente acceder a la base de datos con elsudo mysql
dominio. Solo si se modificó la configuración predeterminada para la autenticación, y esto da como resultado unaacceso denegadoerror, siga los pasos de este tutorial.
requisitos previos
Para recuperar tu MySQL o MariaDBraízcontraseña, necesitarás:
Nota:Ambas guías de instalación de bases de datos conservan la configuración predeterminada para la base de datos.raízcuenta donde no se necesita una contraseña para autenticarse, siempre que pueda acceder al sistemaraízcuenta. Todavía puede seguir esta guía para establecer 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. Necesitará usar diferentes comandos para recuperar elraíz
contraseña dependiendo de cuál de estos haya 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:
Si está ejecutando MariaDB, verá "MariaDB" precedido por el número de versión en la salida:
Salida MariaDB
distribución mysql Ver 15.110.3.25-MariaDB, para debian-linux-gnu (x86_64) usando readline 5.2
Verá un resultado como este si está ejecutando MySQL:
salida mysql
versión mysql8.0.22-0ubuntu0.20.04.3 para Linux en x86_64 ((Ubuntu))
Tenga en cuenta la base de datos que está ejecutando. Esto determinará los comandos apropiados a seguir en el resto de este tutorial.
Para cambiar elraízcontraseña, deberá cerrar el servidor de la base de datos. Si está ejecutando MariaDB, puede hacerlo con el siguiente comando:
- sudo systemctl paradamariadb
Para MySQL, apague el servidor de la base de datos ejecutando:
- sudo systemctl paradamysql
Con la base de datos detenida, puede reiniciarla en modo seguro para restablecer la contraseña de root.
Paso 2: reiniciar el servidor de la base de datos sin verificaciones de permisos
Ejecutar MySQL y MariaDB sin verificación de permisos permite acceder a la línea de comando de la base de datos con privilegios de root sin proporcionar una contraseña válida. Para hacer esto, debe evitar que la base de datos cargue elmesas de subvenciones, que almacenan información de privilegios de usuario. Dado que esto es un riesgo de seguridad, también puede deshabilitar la red para evitar que otros clientes se conecten al servidor temporalmente vulnerable.
Según el servidor de base de datos que haya instalado, la forma de iniciar el servidor sin cargar elmesas de subvencionesdifiere
Configuración de MariaDB para comenzar sin tablas de concesión
Para iniciar el servidor MariaDB sin las tablas de concesión, usaremos elsistemad
unit para establecer parámetros adicionales para el demonio del servidor MariaDB.
Ejecute el siguiente comando, que establece la variable de entorno MYSQLD_OPTS utilizada por MariaDB al inicio. El--skip-grant-tables
y--skip-redes
Las opciones le dicen a MariaDB que se inicie sin cargar las tablas de concesión o las funciones de red:
- sudo systemctl conjunto-entorno MYSQLD_OPTS="--skip-grant-tables --skip-redes"
Luego inicie el servidor MariaDB:
- sudo systemctl iniciar mariadb
Este comando no producirá ningún resultado, pero reiniciará el servidor de la base de datos, teniendo en cuenta la nueva configuración de la variable de entorno.
Puedes asegurarte de que comenzó consudo systemctl estado mariadb
.
Ahora debería poder conectarse a la base de datos como MariaDBraízusuario sin proporcionar una contraseña:
Inmediatamente verá un indicador de shell de la base de datos:
Ahora que tiene acceso al servidor de la base de datos, puede cambiar elraízcontraseña como se muestra en el Paso 3.
Configuración de MySQL para comenzar sin tablas de concesión
Para iniciar el servidor MySQL sin sus tablas de concesión, modificará la configuración de systemd para que MySQL pase parámetros de línea de comandos adicionales al servidor al iniciarse.
Para hacer esto, ejecute el siguiente comando:
- sudo systemctl editar mysql
Este comando abrirá un nuevo archivo en elnano
editor, que usará para editar MySQLanulaciones de servicio. Estos cambian los parámetros de servicio predeterminados para MySQL.
Este archivo estará vacío. Agrega el siguiente contenido:
Anulaciones del servicio MySQL
[Servicio]ExecStart=ExecStart=/usr/sbin/mysqld--skip-grant-tables --skip-redes
La primeraExecStart
declaración borra el valor predeterminado, mientras que el segundo proporcionasistemad
con el nuevo comando de inicio, incluidos los parámetros para deshabilitar la carga de las tablas de concesión y las capacidades de red.
PrensaCTRL-x
para salir del archivo, entoncesY
para guardar los cambios que ha realizado, luegoINGRESAR
para confirmar el nombre del archivo.
recargar elsistemad
configuración para aplicar estos cambios:
- sudo systemctl daemon-recargar
Ahora inicie el servidor MySQL:
- sudo systemctl iniciar mysql
El comando no mostrará ningún resultado, pero se iniciará el servidor de la base de datos. No se habilitarán las mesas de concesión y networking.
Conéctese a la base de datos como usuario raíz:
Inmediatamente verá un indicador de shell de la base de datos:
Ahora que tiene acceso al servidor, puede cambiar elraízcontraseña.
Paso 3: cambiar la contraseña raíz
El servidor de la base de datos ahora se ejecuta en un modo limitado; las tablas de concesión no están cargadas y no hay soporte de red habilitado. Esto le permite acceder al servidor sin proporcionar una contraseña, pero le prohíbe ejecutar comandos que alteren los datos. Para restablecer elraízcontraseña, debe cargar las tablas de concesión ahora que ha obtenido acceso al servidor.
Dígale al servidor de la base de datos que vuelva a cargar las tablas de concesión emitiendo elPRIVILEGIOS DE DESCARGA
dominio:
Ahora puede cambiar elraízcontraseña. El método que use depende de si está usando MariaDB o MySQL.
Cambiar la contraseña de MariaDB
Si está utilizando MariaDB, ejecute la siguiente declaración para establecer la contraseña para elraízcuenta, asegurándose de reemplazarNueva contraseña
con una contraseña nueva y segura que recordarás:
- ALTERAR USUARIO 'raíz'@'localhost' IDENTIFICADO POR 'Nueva contraseña';
Verá este resultado que indica que la contraseña cambió:
Producción
Consulta OK, 0 filas afectadas (0.001 seg)
MariaDB permite usar mecanismos de autenticación personalizados, así que ejecute las siguientes dos declaraciones para asegurarse de que MariaDB usará su mecanismo de autenticación predeterminado para la nueva contraseña que asignó alraízcuenta:
- ACTUALIZAR mysql.user SET authentication_string = '' WHERE usuario="raíz";
- ACTUALIZAR mysql.user SET plugin = '' WHERE usuario="raíz";
Verá el siguiente resultado para cada declaración:
Producción
Consulta OK, 0 filas afectadas (0.01 seg)
La contraseña ahora está cambiada. Tiposalida
para salir de la consola de MariaDB y continuar con el Paso 4 para reiniciar el servidor de la base de datos en modo normal.
Cambiar la contraseña de MySQL
Para MySQL, ejecute la siguiente declaración para cambiar elraízcontraseña del usuario, reemplazandoNueva contraseña
con una contraseña segura que recordarás. MySQL permite usar mecanismos de autenticación personalizados, por lo que la siguiente declaración también asegura que MySQL usará su mecanismo de autenticación predeterminado para autenticar elraízusuario usando la nueva contraseña:
- ALTERAR USUARIO 'raíz'@'localhost' IDENTIFICADO CON caching_sha2_password POR 'Nueva contraseña';
Verá este resultado que indica que la contraseña se cambió correctamente:
Producción
Consulta OK, 0 filas afectadas (0.01 seg)
La contraseña ahora está cambiada. Salga de la consola MySQL escribiendosalida
.
Reiniciemos la base de datos en modo operativo normal.
Paso 4: revertir su servidor de base de datos a la configuración normal
Para reiniciar el servidor de la base de datos en su modo normal, debe revertir los cambios que realizó para habilitar la red y cargar las tablas de permisos. Nuevamente, el método que use depende de si usó MariaDB o MySQL.
Para MariaDB, desactive elMYSQLD_OPTS
variable de entorno que configuró anteriormente:
- sudo systemctl unset-environment MYSQLD_OPTS
Luego, reinicie el servicio usandosystemctl
:
- sudo systemctl reiniciar mariadb
Para MySQL, elimine la configuración systemd modificada:
- sudo systemctl revertir mysql
Verá un resultado similar al siguiente:
Producción
Se eliminó /etc/systemd/system/mysql.service.d/override.conf. Se eliminó /etc/systemd/system/mysql.service.d.
Luego, vuelva a cargar la configuración de systemd para aplicar los cambios:
- sudo systemctl daemon-recargar
Finalmente, reinicie el servicio:
- sudo systemctl reiniciar mysql
La base de datos ahora se reinicia y vuelve a su estado normal. Confirme que la nueva contraseña funciona iniciando sesión como elraízusuario con contraseña:
Se le pedirá una contraseña. Ingrese su nueva contraseña y obtendrá acceso al aviso de la base de datos como se esperaba.
Conclusión
Ha restaurado el acceso administrativo al servidor MySQL o MariaDB. Asegúrese de que la nueva contraseña que eligió sea fuerte y segura, y guárdela en un lugar seguro.
Para obtener más información sobre la administración de usuarios, los mecanismos de autenticación o las formas de restablecer las contraseñas de la base de datos para otras versiones de MySQL o MariaDB, consulte la documentación oficial de MySQL o la documentación de MariaDB.
FAQs
How do I install MySQL on Ubuntu 20.04 terminal? ›
- Installing MySQL on Ubuntu: Update Package Repository & Install MySQL.
- Installing MySQL on Ubuntu: Configure the MySQL Installation.
- Installing MySQL on Ubuntu: Add a Dedicated MySQL User.
- Installing MySQL on Ubuntu: Grant Privileges to Secure MySQL.
- Step 1: Check the version of MySQL on Ubuntu 20.04.
- Step 2: Stop the MySQL server.
- Step 3: Skip Grant Tables & Networking.
- Step 4: Start the MySQL service.
- Step 5: Sign In to the MySQL shell.
- Step 6: Change the root password.
- Stop the MySQL/MariaDB service. ...
- Start the MySQL/MariaDB server without loading the grant tables. ...
- Log in to the MySQL shell. ...
- Set a new root password. ...
- Stop and Start the database server normally. ...
- Verify the password.
- Step 1: Stop the MySQL server. To begin, we must first stop the MySQL service. ...
- Step 2, Option 1: use –init-file. To do this, open your code editor and generate a file that contains some SQL code, which will be used to reset the password. ...
- Step 2, Option 2: use –skip-grant-tables. ...
- Step 3: Log in with the new password.
- 1 - Download and install MySQL server and client.
- 2 - Secure your MySQL root user account.
- 3 – Check the MySQL version.
- 4 - Add MySQL user and set privileges.
- 5 - Test MySQL 5.7.
- 6 – Log in to your MySQL server.
- Step 1: MySQL Client Installation. Install the mysql-client to remotely connect with the server: sudo apt install mysql-client -y. ...
- Step 2: MySQL Server Installation. ...
- Step 3: MySQL Configuration. ...
- Step 4: MySQL User Authentication Adjustments.
- Check MySQL Version. ...
- Stop MySQL Server. ...
- Skip Grant Tables & Networking. ...
- Start MySQL Service. ...
- Login To MySQL Shell. ...
- Reset Root Password. ...
- Kill All MySQL Processes and Restart MySQL Service. ...
- Login MySQL With New Password.
- Running the systemctl command. The systemctl restart command follows the same rules as the systemctl start and stop commands. ...
- Executing the service command. The service command is the go-to tool for restarting MySQL in older systems, though it works in newer distros as well. ...
- Run the mysql script.
In the mysql client, tell the server to reload the grant tables so that account-management statements work: mysql> FLUSH PRIVILEGES; Then change the 'root'@'localhost' account password. Replace the password with the password that you want to use.
How do I reset my MySQL or MariaDB root password? ›- mysqld_safe --skip-grant-tables & Copy.
- mysql -u root mysql. Copy.
- UPDATE user SET password=PASSWORD("my-new-password") WHERE user='root'; Copy.
- FLUSH PRIVILEGES; Copy.
- quit; Copy.
- mysqladmin -u root -p shutdown. Copy.
How do I reset my MySQL root password MariaDB? ›
To change the root password, type the following at the MySQL/MariaDB command prompt: ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyN3wP4ssw0rd'; flush privileges; exit; Store the new password in a secure location.
How do I reset my MariaDB database? ›- Step 1: Checking the Database Version. ...
- Step 2: Stop the Database Server. ...
- Step 3: Restart the Database Server Without Checking Permissions. ...
- Step 4: Changing the Root Password. ...
- Step 5: Normally Restart the Database Server.
- Log in as root into your server through SSH (eg: puTTY/terminal/bash). Alternatively, run the commands that follow as su or sudo as root user. ...
- Navigate to /etc/mysql /cd /etc/mysql.
- View the file my. cnf either using the command cat or use any text editing software (vi/vim/nano).
The default user for MySQL is root and by default it has no password.
How to install MySQL from terminal? ›- wget https://dev.mysql.com/get/mysql-apt-config_0.8.12-1_all.deb. Next, install the package.
- sudo dpkg -i mysql-apt-config_0.8.12-1_all.deb. In the package configuration window, specify your system and the version of the MySQL server you want to install. ...
- sudo apt update.
Using mysql is very easy. Invoke it from the prompt of your command interpreter as follows: shell> mysql db_name Or: shell> mysql --user=user_name --password=your_password db_name Then type an SQL statement, end it with “;”, \g, or \G and press Enter.
How to install SQL in Ubuntu using terminal? ›- Step 1: Add a repository key. Run the following command to import the public repository GPG keys from the Microsoft website. ...
- Step 2: Add a SQL Server repository. ...
- Step 3: Install SQL Server. ...
- Step 4: Set up SQL Server. ...
- Step 5: Verify that SQL Server is running.
- $ sudo systemctl start mysql. service.
- $ sudo systemctl status mysql. service.