Restablecer la contraseña raíz de MySQL en Ubuntu

Mehvish Ashiq 20 junio 2023
  1. Restablecer la contraseña root de MySQL olvidada en Ubuntu
  2. Solucione el error al configurar una contraseña raíz de MySQL con mysql_secure_installation
Restablecer la contraseña raíz de MySQL en Ubuntu

Este tutorial considera dos escenarios en los que necesitamos restablecer la contraseña root de MySQL en Ubuntu. Primero, cuando olvidamos la contraseña root y queremos restablecerla; segundo, cuando no podemos establecer una contraseña root con mysql_secure_installation.

Las instrucciones dadas en este tutorial han sido probadas usando MySQL Version 8.0.29 y Ubuntu 20.04.4. Veamos la solución para ambos escenarios a continuación.

Note
Debe tener acceso al servidor Ubuntu 20.04.4 donde se ejecuta MySQL con un superusuario o alguna otra forma de acceder con los privilegios de raíz.

Restablecer la contraseña root de MySQL olvidada en Ubuntu

Mantener una contraseña segura para una base de datos es correcto, pero recordarla puede ser difícil. ¿Qué sucede si olvida la contraseña root de MySQL?

¡No entre en pánico! Muchos de nosotros enfrentamos este problema, pero hay una manera de actualizarlo.

  1. Verifique su versión de MySQL usando el siguiente comando

    $ mysql --version
    
  2. Apague el servidor MySQL.

    De esta forma, podemos reiniciarlo fácilmente en modo seguro para restablecer la contraseña root. Tendrás que introducir la contraseña root del sistema, que en nuestro caso es Ubuntu.

  3. Para iniciar el servidor MySQL sin concesión de tablas, usamos el siguiente comando para actualizar el archivo de configuración systemd para pasar parámetros de línea de comando adicionales al servidor MySQL al inicio.

    sudo systemctl edit mysql
    

    Tan pronto como presione Enter, se abrirá un archivo para usted usando el editor nano. Lo usaremos para editar las anulaciones de servicio de MySQL.

    De esta forma, podemos actualizar los parámetros de servicio predeterminados de MySQL.

    Agregue lo siguiente al archivo vacío que se acaba de abrir en el editor nano.

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

    Una vez que pegue el contenido dado arriba en el archivo, presione Ctrl+X para salir del archivo, Y para guardar las actualizaciones que acabamos de hacer. y Intro para confirmar el nombre del archivo.

    Aquí, ExecStart primero borra todos los valores predeterminados y luego proporciona a systemd un nuevo comando de inicio que incluye diferentes parámetros. Estos parámetros deshabilitan la carga de las tablas de redes y permisos.

  4. Para aplicar las actualizaciones, ejecute el siguiente comando para recargar la configuración de systemd.

    sudo systemctl daemon-reload
    
  1. Inicie el servidor MySQL usando el siguiente comando; no producirá ningún resultado, pero puede verificar el estado del servidor MySQL.

    sudo systemctl start mysql
    

    Esta vez, las tablas de redes y subvenciones no están habilitadas.

  2. Nos conectamos a la base de datos como usuario root.

    sudo mysql -u root
    
  3. Ahora, podemos cambiar la contraseña, pero antes de eso, use el siguiente comando para decirle al servidor de la base de datos que vuelva a cargar las tablas de concesión.

    mysql> FLUSH PRIVILEGES;
    
  4. Ejecute la siguiente declaración para restablecer la contraseña del usuario root de MySQL. No olvide reemplazar mi_nueva_contraseña con una contraseña segura que pueda recordar fácilmente.

    ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'my_new_password';
    

    Aquí, MySQL nos permite usar autenticación personalizada. Por lo tanto, la declaración dada anteriormente asegura que MySQL ahora usará su autenticación predeterminada para autenticar al usuario raíz de MySQL a través de una nueva contraseña.

    ¡Bravo! la contraseña del usuario root de MySQL ahora está cambiada. Escriba salir para salir del shell de MySQL.

  5. Revierta el servidor MySQL a la configuración normal ejecutando el siguiente comando.

    sudo systemctl revert mysql
    

    Veremos un resultado similar al siguiente, lo que significa que la declaración anterior se ha ejecutado correctamente.

    Removed /etc/systemd/system/mysql.service.d/override.conf.
    Removed /etc/systemd/system/mysql.service.d.
    
  6. Para aplicar los cambios, recarga la configuración de systemd.

    sudo systemctl daemon-reload
    
  1. Reinicie el servidor MySQL de la siguiente manera.

    sudo systemctl restart mysql
    
  2. Ahora, ejecute la siguiente declaración para iniciar sesión como usuario root de MySQL con la nueva contraseña.

    mysql -u root -p
    

    Se le pedirá que ingrese la contraseña del usuario root de MySQL. Introduzca la nueva contraseña y disfrute del acceso a su servidor de base de datos.

Solucione el error al configurar una contraseña raíz de MySQL con mysql_secure_installation

Los usuarios que instalan el servidor MySQL por primera vez pueden haberse encontrado con el siguiente error que se genera al configurar una contraseña root de MySQL con mysql_secure_installation.

Failed! Error: SET PASSWORD has no significance for user 'root'@'localhost' as the authentication method used doesn't store authentication data in the MySQL server. Please consider using ALTER USER instead if you want to change authentication parameters.

¡No te preocupes! Aquí está la solución para eso.

  1. Elimine el proceso de mysql_secure_installation o cierre la terminal.

  2. Use la siguiente declaración para iniciar sesión en el servidor MySQL.

    sudo mysql
    

    Se le pedirá que introduzca la contraseña root del sistema. Una vez que ingrese la contraseña, será llevado a la consola de MySQL.

  3. Ejecute la siguiente instrucción ALTER. No olvide reemplazar mi_nueva_contraseña con su contraseña.

    mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password by 'my_new_password';
    

    Además, escriba salir para salir del shell de MySQL.

  4. Use la siguiente declaración para iniciar sesión con la nueva contraseña.

    mysql -u root -p
    

    Finalmente, puede iniciar sesión en el servidor MySQL como usuario root.

Mehvish Ashiq avatar Mehvish Ashiq avatar

Mehvish Ashiq is a former Java Programmer and a Data Science enthusiast who leverages her expertise to help others to learn and grow by creating interesting, useful, and reader-friendly content in Computer Programming, Data Science, and Technology.

LinkedIn GitHub Facebook

Artículo relacionado - MySQL Root