¿Cómo funciona el hash de contraseñas en MySQL?

MySQL utiliza hashing criptográfico para almacenar de forma segura las contraseñas de los usuarios. En lugar de guardar las contraseñas en texto plano, MySQL las convierte en cadenas hash de longitud fija mediante funciones matemáticas unidireccionales. Cuando un usuario intenta iniciar sesión, MySQL genera el hash de la contraseña proporcionada y lo compara con el hash almacenado. Si coinciden, la autenticación tiene éxito. Este enfoque garantiza que, incluso si alguien accede a la base de datos, no pueda leer directamente las contraseñas de los usuarios.

El algoritmo moderno MySQL Native Password aplica hashing SHA-1 dos veces: SHA1(SHA1(password)). Este doble hashing proporciona una capa adicional de seguridad. La cadena hexadecimal resultante de 40 caracteres se precede con un asterisco (*) para indicar que es una contraseña hashed, produciendo valores como *2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19.

Descripción de la herramienta

Este MySQL Password Hash Generator crea hashes de autenticación compatibles con bases de datos MySQL y MariaDB. Introduce cualquier contraseña y genera instantáneamente el hash correspondiente que puede usarse directamente en sentencias SQL como CREATE USER o ALTER USER. La herramienta soporta tanto el formato moderno MySQL Native Password (MySQL 4.1 y posteriores) como el formato legado Old Password para sistemas más antiguos.

Ejemplos

MySQL Native Password (4.1+):

  • Entrada: mypassword
  • Salida: *FABE5482D5AADF36D028AC443D117BE1180B9725

Old Password (Pre-4.1):

  • Entrada: mypassword
  • Salida: 162eebfb6477e5d3

Uso de SQL:

-- Crear usuario con contraseña hashed
CREATE USER 'username'@'localhost' IDENTIFIED BY PASSWORD '*FABE5482D5AADF36D028AC443D117BE1180B9725';

-- Actualizar la contraseña de un usuario existente
ALTER USER 'username'@'localhost' IDENTIFIED BY PASSWORD '*FABE5482D5AADF36D028AC443D117BE1180B9725';

Características

  • MySQL Native Password: Genera hashes SHA1(SHA1(password)) para MySQL 4.1+ y MariaDB
  • Legacy Old Password: Soporta el formato de hash previo a MySQL 4.1 para compatibilidad retroactiva
  • Hash en tiempo real: El hash se actualiza instantáneamente mientras escribe
  • Alternar visibilidad de la contraseña: Mostrar u ocultar la entrada de la contraseña para facilitar su ingreso
  • Copiar con un clic: Copia rápidamente el hash generado al portapapeles

Casos de uso

  • Creación de cuentas de usuario MySQL con contraseñas pre‑hashed en scripts de despliegue
  • Migración de usuarios entre bases de datos MySQL preservando los hashes de contraseñas
  • Pruebas y validación de configuraciones de autenticación MySQL
  • Generación de hashes de contraseñas para aplicaciones compatibles con MySQL
  • Resolución de problemas de autenticación comparando hashes esperados con los reales

Formatos de hash compatibles

Formato Algoritmo Versión MySQL Ejemplo de salida
MySQL Native Password SHA1(SHA1(password)) 4.1+ *2470C0C06DEE42FD...
Old Password Hash personalizado Pre-4.1 6f8c114b58f2ce9e

Consideraciones de seguridad

El hash MySQL Native Password es el formato recomendado para todas las instalaciones modernas de MySQL y MariaDB. El formato Old Password se considera inseguro y solo debe usarse para compatibilidad con sistemas heredados que no pueden actualizarse. MySQL 8.0 introdujo caching_sha2_password como nuevo valor predeterminado, pero mysql_native_password sigue siendo ampliamente soportado y comúnmente utilizado.