Cómo comprobar, cambiar y restablecer la contraseña root de MySQL (Guía completa para principiantes)

目次

1. Cómo verificar la contraseña raíz de MySQL

La contraseña raíz de MySQL es un elemento crítico en la gestión de bases de datos. Sin embargo, especialmente para principiantes, es posible que se pregunte: «No sé la contraseña» o «¿Dónde puedo encontrar la contraseña inicial?». En esta sección, explicaremos métodos específicos para verificar la contraseña raíz de MySQL.

Cómo verificar la contraseña inicial

En MySQL 5.7 y versiones posteriores, se genera automáticamente una contraseña inicial para el usuario root y se registra en el archivo de registro durante la instalación. Siga los pasos a continuación para verificar esta contraseña temporal.

Pasos

  1. Abra una terminal (o Símbolo del sistema) para verificar el archivo de registro de MySQL.
  2. Ejecute el siguiente comando:
    sudo grep 'temporary password' /var/log/mysqld.log
    
  1. La salida incluirá algo como lo siguiente:
    [Note] A temporary password is generated for root@localhost: EaGapdplN0*m
    
  1. En este caso, EaGapdplN0*m es la contraseña inicial para el usuario root.

Notas importantes

  • La contraseña temporal solo se puede usar una vez. Después de iniciar sesión, debe cambiarla inmediatamente.
  • Si no se puede encontrar el archivo de registro o encuentra un error de permisos, ejecute el comando con privilegios administrativos.

Cómo verificar la contraseña actual

Por razones de seguridad, MySQL no proporciona un comando o método para ver directamente una contraseña raíz existente. Si no conoce la contraseña actual, consulte la sección “Qué hacer si olvidó la contraseña raíz” y considere restablecerla.

2. Cómo cambiar la contraseña raíz de MySQL

Cambiar regularmente la contraseña raíz de MySQL es importante para mantener la seguridad. En esta sección, explicaremos en detalle cómo cambiar la contraseña utilizando las credenciales raíz actuales.

Pasos básicos para cambiar la contraseña

Siga estos pasos para iniciar sesión en MySQL y establecer una nueva contraseña.

Pasos

  1. Abra una terminal o Símbolo del sistema e ingrese el siguiente comando para iniciar sesión en MySQL:
    mysql -u root -p
    
  • -u root especifica que el nombre de usuario es root.
  • -p le solicita que ingrese la contraseña durante el inicio de sesión.
  1. Ejecute el siguiente comando SQL para cambiar la contraseña:
    ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewStrongPassword';
    
  1. Recargue la información de privilegios ejecutando:
    FLUSH PRIVILEGES;
    
  1. Después de ejecutar los comandos con éxito, cierre la sesión de MySQL:
    exit
    

Notas importantes

  • Use una contraseña fuerte
  • Recomendamos que su nueva contraseña incluya los siguientes elementos: Ejemplo: MyS3cure!2025

    • Letras mayúsculas y minúsculas
    • Números
    • Símbolos (por ejemplo, @, #, $, !)
    • Al menos 12 caracteres de longitud
    • Tenga en cuenta las sesiones activas
    • Si cambia la contraseña durante una sesión de MySQL, es posible que necesite reconectarse.
    • Verifique los privilegios del usuario
    • Asegúrese de que el usuario root tenga los privilegios apropiados. Si no puede cambiar la contraseña, contacte a su administrador del sistema.

Problemas comunes al cambiar la contraseña

No se puede iniciar sesión después de cambiar la contraseña

  • Causa: Es posible que no haya ejecutado el comando FLUSH PRIVILEGES.
  • Solución: Inicie sesión nuevamente y ejecute FLUSH PRIVILEGES; .

La nueva contraseña no cumple con los requisitos de la política de seguridad

  • Causa: MySQL puede tener habilitada una política de contraseñas estricta.
  • Solución: Establezca una contraseña más fuerte o ajuste la configuración de la política si es necesario.

3. Qué hacer si olvidó la contraseña raíz

Si olvida la contraseña raíz de MySQL, no podrá acceder a la base de datos utilizando métodos de inicio de sesión normales. Sin embargo, al deshabilitar temporalmente el sistema de autenticación de MySQL, puede restablecer la contraseña. En esta sección, explicamos los pasos detallados.

Pasos para restablecer la contraseña raíz

1. Detenga el servicio de MySQL

Primero, detenga el servicio de MySQL para cerrar temporalmente la base de datos. Use el siguiente comando:

sudo systemctl stop mysqld
  • Si el comando se ejecuta con éxito, el servicio de MySQL se detendrá.

2. Iniciar MySQL con la autenticación deshabilitada

Inicie MySQL con la opción --skip-grant-tables para deshabilitar la autenticación.

sudo mysqld_safe --skip-grant-tables &
  • Este comando inicia MySQL sin aplicar la autenticación.
  • Importante: Dado que la seguridad se reduce significativamente en este modo, asegúrese de que ningún otro usuario pueda acceder al sistema mientras realiza esta operación.

3. Restablecer la contraseña de root

Inicie sesión en MySQL mientras la autenticación está deshabilitada y restablezca la contraseña.

  1. Inicie sesión en MySQL:
    mysql -u root
    
  1. Establezca una nueva contraseña de root con el siguiente comando:
    ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewStrongPassword';
    
  1. Recargue la información de privilegios:
    FLUSH PRIVILEGES;
    
  1. Después de completar el trabajo, cierre la sesión de MySQL:
    exit
    

4. Reiniciar el servicio MySQL

Reinicie el servicio MySQL para volver a habilitar la autenticación normal:

sudo systemctl restart mysqld

Después de reiniciar, inicie sesión en MySQL usando la contraseña recién establecida.

Notas importantes

  • Mantener la seguridad
  • Al usar la opción --skip-grant-tables, MySQL está completamente desprotegido. Realice esta tarea rápidamente y evite riesgos innecesarios.
  • Impacto en otros usuarios
  • Este método está destinado a la cuenta root. Asegúrese de que otros usuarios no se vean afectados.

Solución de problemas

Comando mysqld_safe no encontrado

  • Causa: En algunas distribuciones de Linux, mysqld_safe puede no estar instalado.
  • Solución: Inicie MySQL directamente usando:
    sudo mysqld --skip-grant-tables &
    

Aún no se puede iniciar sesión después de restablecer la contraseña

  • Causa: MySQL puede no haber recargado la información de privilegios actualizada.
  • Solución: Inicie sesión nuevamente y ejecute FLUSH PRIVILEGES;.

4. Mejores prácticas para reforzar la seguridad de MySQL

Gestionar adecuadamente la contraseña root de MySQL es importante, pero no es suficiente por sí sola. Para operar una base de datos de forma segura, se deben implementar medidas de seguridad adicionales. Esta sección presenta formas prácticas de mejorar la seguridad de MySQL.

Establecer una contraseña segura

La seguridad de la base de datos depende en gran medida de la fortaleza de la contraseña. Siga estas directrices al crear una contraseña segura.

Directrices para crear contraseñas

  • Longitud: Al menos 12 caracteres
  • Tipos de caracteres: Una combinación de letras mayúsculas, minúsculas, números y símbolos
  • Ejemplo: 2#SecureMySQL_2025!

Aplicar políticas de seguridad

MySQL le permite configurar políticas de validación de contraseñas. Use el siguiente comando para verificar la política actual:

SHOW VARIABLES LIKE 'validate_password%';

Si es necesario, modifique la política de la siguiente manera:

SET GLOBAL validate_password_policy = 'MEDIUM';
SET GLOBAL validate_password_length = 12;

Eliminar cuentas y datos innecesarios

Verificar y eliminar cuentas innecesarias

Durante la instalación, MySQL puede crear cuentas de prueba predeterminadas o usuarios anónimos. Estos pueden representar riesgos de seguridad y deben eliminarse si no son necesarios.

  1. Verifique la lista actual de usuarios:
    SELECT user, host FROM mysql.user;
    
  1. Elimine los usuarios innecesarios:
    DROP USER 'username'@'hostname';
    

Eliminar la base de datos de prueba

Elimine la base de datos de prueba creada durante la instalación:

DROP DATABASE test;

Restringir el acceso a la cuenta root

Limitar el acceso a la cuenta root mejora la seguridad.

Restringir solo al acceso local

Por defecto, la cuenta root puede permitir conexiones remotas. Restrinja el acceso solo a local:

UPDATE mysql.user SET host = 'localhost' WHERE user = 'root';
FLUSH PRIVILEGES;

Crear una cuenta administrativa separada

En lugar de usar directamente la cuenta root, se recomienda crear una cuenta administrativa dedicada para tareas específicas.

CREATE USER 'admin'@'localhost' IDENTIFIED BY 'StrongAdminPassword';
GRANT ALL PRIVILEGES ON *.* TO 'admin'@'localhost' WITH GRANT OPTION;

Aplicar el principio de privilegio mínimo

Mejore la seguridad otorgando a cada usuario solo los privilegios mínimos necesarios.

Verificar privilegios existentes

SHOW GRANTS FOR 'username'@'hostname';

Revocar privilegios innecesarios

REVOKE ALL PRIVILEGES ON database_name.* FROM 'username'@'hostname';

Automatizar la configuración de seguridad de MySQL

MySQL proporciona el comando mysql_secure_installation para simplificar la configuración de seguridad. Ejecutar este comando le permite:

  • Eliminar cuentas y bases de datos de prueba
  • Desactivar el inicio de sesión remoto del root
  • Aplicar políticas de seguridad

Comando de ejecución

sudo mysql_secure_installation

Realizar copias de seguridad regulares

Como parte del fortalecimiento de la seguridad, se recomienda encarecidamente realizar copias de seguridad regulares de la base de datos. Esto garantiza que pueda restaurar los datos en caso de problemas inesperados.

Ejemplos de copias de seguridad

  1. Copiar todas las bases de datos:
    mysqldump -u root -p --all-databases > backup.sql
    
  1. Copiar una base de datos específica:
    mysqldump -u root -p database_name > database_name_backup.sql
    

5. Preguntas frecuentes (FAQ)

A continuación se presentan preguntas frecuentes y sus respuestas sobre la gestión de la contraseña root de MySQL y la configuración de seguridad. Utilice esta sección para solucionar problemas y resolver inquietudes adicionales.

P1. No puedo encontrar la contraseña inicial de MySQL en el registro. ¿Qué debo hacer?

A1:
En MySQL 5.7 y versiones posteriores, la contraseña inicial se registra en el archivo de registro (normalmente /var/log/mysqld.log). Sin embargo, si el archivo de registro no se encuentra o ha sido eliminado, pruebe lo siguiente:

  1. Reinstalar MySQL generará una nueva contraseña temporal.
  2. Si aún no puede iniciar sesión, consulte “Qué hacer si olvidó la contraseña root” y restablezca la contraseña.

P2. ¿Pueden usuarios que no sean root cambiar sus contraseñas usando el mismo procedimiento?

A2:
Sí, los usuarios que no sean root pueden cambiar sus contraseñas usando el mismo método. Sin embargo, se requieren privilegios administrativos para ese usuario. Utilice el siguiente comando:

ALTER USER 'username'@'hostname' IDENTIFIED BY 'NewStrongPassword';

P3. No se encuentra el comando mysqld_safe. ¿Qué debo hacer?

A3:
En algunas distribuciones de Linux, mysqld_safe puede no estar instalado. En este caso, puede iniciar MySQL con la opción --skip-grant-tables usando el comando mysqld:

sudo mysqld --skip-grant-tables &

Sin embargo, dado que esto desactiva la autenticación, se aplican las mismas precauciones de seguridad.

P4. Cambié la contraseña pero aún no puedo iniciar sesión. ¿Por qué?

A4:
Las posibles causas incluyen lo siguiente:

  1. La información de privilegios no se actualizó: Después de cambiar la contraseña, ejecute el siguiente comando para refrescar los privilegios:
    FLUSH PRIVILEGES;
    
  1. Error de escritura: Asegúrese de que las letras mayúsculas, minúsculas y los caracteres especiales de la nueva contraseña se ingresen correctamente.
  2. Restricciones de la política de contraseñas: MySQL puede rechazar contraseñas débiles según su política de seguridad. Verifique la configuración de la política y use una contraseña más fuerte.

P5. ¿Existe una forma de fortalecer la seguridad de MySQL de una sola vez?

A5:
Para configurar de manera eficiente los ajustes de seguridad de MySQL, se recomienda usar el comando mysql_secure_installation. Este comando realiza automáticamente lo siguiente:

  • Elimina usuarios y bases de datos de prueba
  • Desactiva el inicio de sesión remoto del root
  • Aplica una política de contraseñas robusta

Ejecute el comando de la siguiente manera:

sudo mysql_secure_installation

P6. ¿La gestión de contraseñas difiere según la versión de MySQL?

A6:
Sí, el método de gestión de la contraseña root puede variar según la versión de MySQL. Las principales diferencias son:

  • MySQL 5.7 y posteriores: Se genera automáticamente una contraseña temporal y se registra en el archivo de registro.
  • MySQL 5.6 y anteriores: La contraseña inicial puede estar vacía (sin contraseña establecida).

Para comprobar su versión de MySQL, use el siguiente comando:

mysql --version

P7. ¿Cómo puedo permitir conexiones remotas para el usuario root?

A7:
Por razones de seguridad, no se recomienda el acceso remoto como root. Sin embargo, si es necesario, puede habilitarlo con los siguientes comandos:

  1. Permitir acceso remoto:
    UPDATE mysql.user SET host = '%' WHERE user = 'root';
    
  1. Recargar información de privilegios:
    FLUSH PRIVILEGES;
    

Importante:
Si permite el acceso remoto, asegúrese de implementar medidas de seguridad adicionales, como reglas de firewall y restricciones de IP.

Q8. ¿Puede explicar brevemente los pasos para restablecer la contraseña de root?

A8:

  1. Detener el servicio MySQL:
    sudo systemctl stop mysqld
    
  1. Iniciar MySQL con la autenticación deshabilitada:
    sudo mysqld_safe --skip-grant-tables &
    
  1. Restablecer la contraseña:
    ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewStrongPassword';
    FLUSH PRIVILEGES;
    
  1. Reiniciar el servicio MySQL:
    sudo systemctl restart mysqld