Su contraseña no cumple con los requisitos de la política actual.

148

Quiero crear un nuevo usuario en mysql con sintaxis:

create user 'demo'@'localhost' identified by 'password';

Pero devuelve un error:

Su contraseña no cumple con los requisitos de la política actual.

He intentado muchas contraseñas pero no funcionan. ¿Cómo puedo arreglar esto?

Nguyen
fuente
1
Establezca el nivel de política de contraseña más bajo. Echar un vistazo aquí: dev.mysql.com/doc/refman/5.6/en/...
Fjarlaegur
44
¿Cómo está configurada su política de contraseña? Puede verificar las variables que se han configurado para su módulo de validación de contraseña utilizandoSHOW VARIABLES LIKE 'validate_password%'
JNevill
¡Gracias! Establecí el nivel de política de contraseña más bajo y funciona.
Nguyen
1
UNINSTALL COMPONENT 'file://component_validate_password';
Resolví

Respuestas:

245

Por tu contraseña. Puede ver las métricas de configuración de validación de contraseña utilizando la siguiente consulta en el cliente MySQL:

SHOW VARIABLES LIKE 'validate_password%';

La salida debería ser algo así:

+--------------------------------------+-------+
| Variable_name                        | Value |
+--------------------------------------+-------+
| validate_password.check_user_name    | ON    |
| validate_password.dictionary_file    |       |
| validate_password.length             | 6     |
| validate_password.mixed_case_count   | 1     |
| validate_password.number_count       | 1     |
| validate_password.policy             | LOW   |
| validate_password.special_char_count | 1     |
+--------------------------------------+-------+

entonces puede establecer el nivel de política de contraseña más bajo, por ejemplo:

SET GLOBAL validate_password.length = 6;
SET GLOBAL validate_password.number_count = 0;

verifique la documentación de MySQL .

Hung Nguyen
fuente
31
Debería citar la documentación oficial de MySQL , no un video de YouTube, por el amor de Dios.
Marqués de Lorne
26
Use el siguiente comando para usar 'contraseña' como contraseña para la máquina de desarrollo:SET GLOBAL validate_password_policy = 0;
Mahmudul Hasan Shohag
44
SET GLOBAL validate_password.length = 6; SET GLOBAL validate_password.number_count = 0; ¡¡actualizado!!
BeatingBytes
66
es más bienSET GLOBAL validate_password.policy = 0;
iamtodor
1
Esto fue útil porque en realidad me mostró por qué mi contraseña de 30 caracteres era "débil" (sin caracteres especiales). Yo era capaz de eliminar el requisito especial de caracteres y aumentar la longitud mínima de 8 a 20.
andrewtweber
68

NOTA: Esto podría no ser una solución segura. Pero si está trabajando en un entorno de prueba, solo necesita una solución rápida y ni siquiera le importan las configuraciones de seguridad. Esta es una solución rápida.

El mismo problema me ocurrió cuando ejecuté "mysql_secure_installation" y modifiqué el nivel de seguridad de la contraseña a 'medio'.

Pasé por alto el error ejecutando lo siguiente:

mysql -h localhost -u root -p
mysql>uninstall plugin validate_password;

asegúrese de reinstalar el complemento "validate_password" si es necesario.

kennyut
fuente
3
Pésima solución. Debes bajar el nivel a lo que más te convenga, no eliminar toda la instalación.
Marqués de Lorne
10
gracias por publicar. Arreglo rápido y sucio. al igual que lo que dice @kennyut: asegúrese de reinstalar el complemento "validate_password"
Meng Zhao
52

Si no le importa cuál es la política de contraseña. Puede configurarlo en BAJO emitiendo el siguiente comando mysql:

mysql> SET GLOBAL validate_password_policy=LOW;
Singh
fuente
8
debería ser SET GLOBAL validate_password.policy=LOW;en su lugar
songyy
22

Para MySQL 8 *

SET GLOBAL validate_password.policy=LOW

Enlace de referencia para explicar sobre la política - Haga clic aquí

Philip
fuente
20

Después de ejecutar el comando sudo mysql_secure_installation.

  1. Ejecute sudo mysqlpara ingresar al indicador mysql.
  2. Ejecute esto SELECT user,authentication_string,plugin,host FROM mysql.user;para verificar que el usuario root tenga como complemento auth_socket .
  3. A continuación, ejecute uninstall plugin validate_password;para quitar privilegios antes de ejecutar esto ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';Asegúrese de cambiar la contraseña a una contraseña segura .

NOTA: consulte este enlace https://www.digitalocean.com/community/tutorials/how-to-install-mysql-on-ubuntu-18-04 para obtener más ayuda

Leo Sammy
fuente
11

Debe cambiar la política de contraseña de MySQL a BAJA.

iniciar sesión como root

mysql -u root -p

política de cambio

SET GLOBAL validate_password_policy=LOW;

o

SET GLOBAL validate_password_policy=0;

salida

exit

reiniciar el servicio MySQL

sudo service mysqld restart

Debe cambiar la política de contraseña de MySQL a Baja = 0 / Media = 1 / Alta = 2.

SET GLOBAL validate_password_policy=0;
SET GLOBAL validate_password_policy=1;    
SET GLOBAL validate_password_policy=2;
Ruchira
fuente
8

Para MySql 8 puede usar el siguiente script:

SET GLOBAL validate_password.LENGTH = 4;
SET GLOBAL validate_password.policy = 0;
SET GLOBAL validate_password.mixed_case_count = 0;
SET GLOBAL validate_password.number_count = 0;
SET GLOBAL validate_password.special_char_count = 0;
SET GLOBAL validate_password.check_user_name = 0;
ALTER USER 'user'@'localhost' IDENTIFIED BY 'pass';
FLUSH PRIVILEGES;
Javasick
fuente
7

En mi opinión, establecer "validate_password_policy" en "bajo" o desinstalar el "validar complemento de contraseña" no es lo correcto. Nunca debe comprometer la seguridad de su base de datos (a menos que realmente no le importe). Me pregunto por qué la gente incluso sugiere estas opciones cuando simplemente puedes elegir una buena contraseña.

Para superar este problema, ejecuté el siguiente comando en mysql: MOSTRAR VARIABLES COMO 'validate_password%' como lo sugiere @JNevill. Mi "validate_password_policy" se configuró en Medio, junto con otras cosas. Aquí está la captura de pantalla de su ejecución: Validar Política de Contraseña

El resultado se explica por sí mismo. Para una contraseña válida (cuando la Política de contraseñas se establece en media):

  • La contraseña debe tener al menos 8 caracteres
  • El recuento de mayúsculas y minúsculas es 1 (al menos 1 letra en minúscula y 1 letra en mayúscula)
  • El recuento de números es 1
  • El recuento mínimo de caracteres especiales es 1

Por lo tanto, una contraseña válida debe obedecer la política. Ejemplos de contraseña válida para las reglas anteriores pueden ser:

  • Estudiante123 @
  • NINZAcoder $ 100
  • demoPass # 00

Puede elegir cualquier combinación siempre que satisfaga la política.

Para otras "validate_password_policy" simplemente puede buscar los valores de las diferentes opciones y elegir su contraseña en consecuencia (no lo he intentado con "FUERTE" ).

https://dev.mysql.com/doc/refman/5.6/en/validate-password-options-variables.html

Harish Kumar Saini
fuente
2
Es FUERTE para la política de contraseña superior.
Steam gamer
Asimismo, no entiendo a la gente que sugieren a rebajar validate_password_policya LOW. Los usuarios pueden crear o generar perfectamente una contraseña segura que cumpla con el requisito. Si no está seguro de cómo hacerlo, use una herramienta para eso. Por ejemplo github.com/joseluisq/rpasswd
joseluisq
3

Paso 1: verifique su complemento de autenticación predeterminado

SHOW VARIABLES LIKE 'default_authentication_plugin';

Paso 2: cumpliendo sus requisitos de validación de contraseña

SHOW VARIABLES LIKE 'validate_password%';

Paso 3: configurar su usuario con los requisitos de contraseña correctos

CREATE USER '<your_user>'@'localhost' IDENTIFIED WITH '<your_default_auth_plugin>' BY 'password';
Oroki
fuente
3

Tuve el mismo problema y la respuesta está justo en frente de usted, recuerde cuando ejecutó el script mientras instalaba mysql como

sudo mysql_secure_installation

en algún lugar que elija qué tipo de contraseña le gustaría elegir

Hay tres niveles de política de validación de contraseña:

Longitud BAJA> = 8 Longitud MEDIA> = 8, numérico, mayúsculas y minúsculas y caracteres especiales FUERTE Longitud> = 8, numérico, mayúsculas y minúsculas, caracteres especiales y archivo de diccionario

Ingrese 0 = BAJO, 1 = MEDIO y 2 = FUERTE:

tienes que dar una contraseña a la misma política

Estos son algunos ejemplos de sus contraseñas:
para el tipo 0: abcdabcd
para el tipo 1: abcd1234
para el tipo 2:ancd@1234

Anurag Sahu
fuente
2

Para usuarios de Laravel que tengan este problema con MySQL 8.0.x, agregue

'modes'=> [
             'ONLY_FULL_GROUP_BY',
             'STRICT_TRANS_TABLES',
             'NO_ZERO_IN_DATE',
             'NO_ZERO_DATE',
             'ERROR_FOR_DIVISION_BY_ZERO',
             'NO_ENGINE_SUBSTITUTION',
            ],

a su archivo database.php de la siguiente manera:

// database.php

    'connections' => [

        'mysql' => [
            'driver'      => 'mysql',
            'host'        => env( 'DB_HOST', '127.0.0.1' ),
            'port'        => env( 'DB_PORT', '3306' ),
            'database'    => env( 'DB_DATABASE', 'forge' ),
            'username'    => env( 'DB_USERNAME', 'forge' ),
            'password'    => env( 'DB_PASSWORD', '' ),
            'unix_socket' => env( 'DB_SOCKET', '' ),
            'charset'     => 'utf8mb4',
            'collation'   => 'utf8mb4_unicode_ci',
            'prefix'      => '',
            'strict'      => true,
            'engine'      => null,
            'modes'       => [
                'ONLY_FULL_GROUP_BY',
                'STRICT_TRANS_TABLES',
                'NO_ZERO_IN_DATE',
                'NO_ZERO_DATE',
                'ERROR_FOR_DIVISION_BY_ZERO',
                'NO_ENGINE_SUBSTITUTION',
            ],
        ],
    ],

Me lo arregló.

Jekayode
fuente
2

El problema es que su contraseña no coincidirá con las reglas de validación de contraseña. Simplemente puede seguir los pasos a continuación para resolver su problema.

Simplemente puede ver la matriz de configuración de validación de contraseña escribiendo el código a continuación.

mysql-> SHOW VARIABLES LIKE 'validate_password%';

Luego, en su matriz, puede encontrar las variables a continuación con los valores correspondientes y allí debe verificar validate_password_length, validate_password_number_county validate_password_policy.

Verifique los valores utilizados para esas variables. Asegúrese de que validate_password_lengthno debe ser mayor que 6. Puede establecerlo en 6 utilizando el código siguiente.

SET GLOBAL validate_password_length = 6;

Y después de eso, debe establecerlo validate_password_number_counten 0. Hágalo utilizando el siguiente código.

SET GLOBAL validate_password_number_count = 0;

Por último hay que establecer que validate_password_policya low. Tener eso como Mediumo Highno permitirá sus contraseñas menos seguras. Establezca eso en el lowsiguiente código.

SET GLOBAL validate_password_policy=LOW;
Dushan
fuente
1

Establecer una contraseña que satisfaga 7 reglas de validación MySql

p.ej:- d_VX>N("xn_BrD2y

Hacer que los criterios de validación sean un poco más simples resolverá el problema

SET GLOBAL validate_password_length = 6;
SET GLOBAL validate_password_number_count = 0;

Pero se recomienda una contraseña segura es una solución correcta

mujuonly
fuente
0

Este mensaje de error no tiene nada que ver con la contraseña almacenada en su tabla. También ocurre si escribe (en la consola SQL)

"seleccionar contraseña ('123456789')"

o si

"seleccionar contraseña ('A123456789')"

o si

"seleccionar contraseña ('A! 123456789')"

Si escribes

"seleccionar contraseña ('A! a123456789')"

entonces funcionará. Simplemente use letras grandes y pequeñas, caracteres especiales y números para crear su contraseña.

Puede deshabilitar estas comprobaciones en my.cnf, ¡pero entonces tendrá un riesgo de seguridad!

en [mysqld] agregue:

validate_password_policy=LOW
validate_password_special_char_count=0
validate_password_length=0
validate_password_mixed_case_count=0
validate_password_number_count=0
Tino Bellmann
fuente
0

no funcionó para mí en ubuntu nueva instalación de mysqld, tuve que agregar esto: a /etc/mysql/mysql.conf.d/mysqld.cnf o el servidor no se iniciaría (supongo que el complemento no se cargó en el momento correcto cuando simplemente lo agregué sin la directiva plugin-load-add)

plugin-load-add=validate_password.so
validate_password_policy=LOW
validate_password_length=8
validate_password_mixed_case_count=0
validate_password_number_count=0
validate_password_special_char_count=0
Klaus
fuente
0

Hay algunos momentos en los que encontrar una solución rápida es excelente. Pero si puede evitar reducir las restricciones de contraseñas, puede evitar que tenga un gran dolor de cabeza en el futuro.

El siguiente enlace es de la documentación oficial https://dev.mysql.com/doc/refman/5.6/en/validate-password.html , donde exponen un ejemplo exactamente como el suyo y lo resuelven.

El único problema que tiene es que su contraseña no es lo suficientemente segura como para satisfacer la política mínima real (no se recomienda eliminarla). Entonces puede probar diferentes contraseñas como puede ver en el ejemplo.

cristiano
fuente
0

MOSTRAR VARIABLES COMO 'validate_password%';

ingrese la descripción de la imagen aquí

mysql> SET GLOBAL validate_password.length = 6;

mysql> SET GLOBAL validate_password.number_count = 0;

mysql> SET GLOBAL validate_password.policy = BAJO;

MOSTRAR VARIABLES COMO 'validate_password%';

ingrese la descripción de la imagen aquí

hizlan erpak
fuente
-1
mysql> SET GLOBAL validate_password.policy = 0;
CollinsKe
fuente
1
Si bien este código puede resolver el problema del OP, es mejor incluir una explicación sobre cómo su código aborda el problema del OP. De esta forma, los futuros visitantes pueden aprender de su publicación y aplicarla a su propio código. SO no es un servicio de codificación, sino un recurso para el conocimiento. Además, es más probable que se voten las respuestas completas de alta calidad. Estas características, junto con el requisito de que todas las publicaciones sean independientes, son algunos de los puntos fuertes de SO como plataforma, que lo diferencia de los foros. Puede editar para agregar información adicional y / o complementar sus explicaciones con la documentación de origen.
SherylHohman