¿QUÉ ES EL VALIDATE PASSWORD COMPONENT EN MYSQL?

validate_password es un componente oficial de MySQL, a partir de MySQL 8.0 que sirve para mejorar la seguridad al obligar a que las contraseñas cumplan con una política de fortaleza definida por el administrador. Su función principal es rechazar contraseñas débiles cuando se crean o modifican usuarios con sentencias como:
  • "CREATE USER"
  • "ALTER USER"
  • "SET PASSWORD"

Niveles de Política (Policy)

El componente tiene 3 niveles de exigencia:
Policy Nivel Requisitos
LOW Bajo Solo longitud mínima (por defecto 8 caracteres)
MEDIUM Medio Longitud + Mayúsculas + Minúsculas + Números + Caracteres especiales
STRONG Alto Todo lo anterior + No puede contener palabras del diccionario
Se puede cambiar el nivel con:

SET GLOBAL validate_password.policy = 'STRONG';-- o MEDIUM / LOW

Variables de Configuración más importantes

Variable Descripción Valor por defecto
validate_password.policy Nivel de política MEDIUM
validate_password.length Longitud mínima 8
validate_password.mixed_case_count Mínimo de mayúsculas y minúsculas 1
validate_password.number_count Mínimo de números 1
validate_password.special_char_count Mínimo de caracteres especiales 1
validate_password.dictionary_file Ruta al archivo de diccionario (para STRONG) (vacío)
validate_password.check_user_name Rechazar contraseña igual al nombre de usuario ON
Para mostrar el valor de dichas variables hay que ejecutar el sql:

SHOW VARIABLES LIKE 'validate_password.%';
PAra validar la fortaleza de un password MySQL proporciona la función:

SELECT VALIDATE_PASSWORD_STRENGTH('miContraseña123!');
-- Devuelve un valor entre 0 (muy débil) y 100 (muy fuerte)

Ejemplo

-- Activar política fuerte
SET GLOBAL validate_password.policy = 'STRONG';
SET GLOBAL validate_password.length = 12;

-- Este comando fallará si la contraseña es débil:
CREATE USER 'usuario'@'localhost' IDENTIFIED BY 'abc123';