¿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

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.