¿Cómo desactivo la validación de contraseña de mysql?

153

Parece que sin querer he cargado el complemento de validación de contraseña en MySQL 5.7. Este complemento parece obligar a todas las contraseñas a cumplir ciertas reglas.

Me gustaría apagar esto.

He intentado cambiar la variable validate_password_length como se sugiere aquí en vano.

mysql> SET GLOBAL validate_password_length=4;
Query OK, 0 rows affected (0.00 sec)

mysql> SET PASSWORD FOR 'app' = PASSWORD('abcd');
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

Me gustaría descargar el complemento o neutralizarlo de alguna manera.

Alex Ryan
fuente
9
¿Has intentado cambiar la configuración de la política? SET GLOBAL validate_password_policy=LOW;
Rikki
1
SET GLOBAL validate_password.policy=LOW;
belgacea

Respuestas:

430

Esto es lo que hago para eliminar el complemento validar contraseña:

  1. Inicie sesión en el servidor mysql como root mysql -h localhost -u root -p
  2. Ejecute el siguiente comando sql: uninstall plugin validate_password;
  3. Si la última línea no funciona (nueva versión de mysql), debe ejecutar UNINSTALL COMPONENT 'file://component_validate_password';

No recomendaría esta solución para un sistema de producción. Utilicé esta solución en una instancia local de mysql solo para fines de desarrollo.

Ray Hunter
fuente
18
para volver a habilitarlo, use el siguiente comando: INSTALL PLUGIN validate_password SONAME 'validate_password.so';
vchrizz
8
Para eliminar el complemento, deberá configurar una contraseña segura al menos una vez a través de grep 'password' /var/log/mysqld.log | tail -1y luego /usr/bin/mysql_secure_installation. Después de hacerlo, puede ejecutar los comandos de srayhunter anteriores y luego ejecutarlos mysqladmin -u root -p'oldpassword' password newpasspara usar cualquier contraseña que desee.
specialk1st
2
El complemento se llama cracklib_password_checken MariaDB actual.
czerny
27
Nota: En MySQL 8.0.4, el complemento validate_password se volvió a implementar como el componente validate_password. En lugar de la consulta n.º 2 anterior, ejecute:UNINSTALL COMPONENT 'file://component_validate_password';
Aaron Cicali
44
mysql> SET GLOBAL validate_password_policy = 0;
JREAM
41

Estoy usando MySQL v 8.0.12 y el comando para deshabilitar el componente de validación de contraseña es:

UNINSTALL COMPONENT 'file://component_validate_password';

Para instalarlo nuevamente, el comando es:

INSTALL COMPONENT 'file://component_validate_password';

Si solo desea cambiar la política del complemento de validación de contraseña:

SET GLOBAL validate_password.policy = 0;   // For LOW
SET GLOBAL validate_password.policy = 1;   // For MEDIUM
SET GLOBAL validate_password.policy = 2;   // For HIGH
Akshay Gaur
fuente
34

Basándose en la respuesta de Sharfi, edite el archivo /etc/my.cnf y agregue solo esta línea:

validate_password_policy=LOW

Eso debería neutralizar suficientemente la validación según lo solicitado por el OP. Probablemente quiera reiniciar mysqld después de este cambio. Dependiendo de su sistema operativo, se vería algo así como:

sudo service mysqld restart

validate_password_policy toma valores 0, 1 o 2 o las palabras LOW, MEDIUM y STRONG que corresponden a esos números. El valor predeterminado es MEDIO (1), que requiere que las contraseñas contengan al menos una letra mayúscula, una letra minúscula, un dígito y un carácter especial, y que la longitud total de la contraseña sea de al menos 8 caracteres. Cambiar a BAJO como sugiero aquí, entonces solo verificará la longitud, que si no se ha cambiado a través de otros parámetros, verificará una longitud de 8. Si también desea acortar ese límite de longitud, también puede agregar validate_password_length a El archivo my.cnf.

Para obtener más información sobre los niveles y detalles, consulte el documento de mysql .


Para MySQL 8, la propiedad ha cambiado de "validate_password_policy" a "validate_password.policy". Consulte el documento actualizado de mysql para obtener la información más reciente.

ktbos
fuente
66
Si solo necesita un cambio temporal, para permitir que se establezca una sola contraseña, puede usarSET GLOBAL validate_password_policy=LOW;
Rikki
1
Esta es una mejor solución que eliminar el módulo en sí.
Mrugesh Mistry
2
mysql: variable desconocida 'validate_password_policy = LOW'
Amalgovinus
2
Parece que el nombre de la variable ha cambiado en la última versión de MySQL. @Amalgovinus, intente usar el nombre de variable "validate_password.policy" en su lugar y vea si eso funciona para usted. Y si lo hace, actualizaré mi respuesta.
ktbos
6

Para deshabilitar las verificaciones de contraseña en mariadb-10.1.24 (Fedora 24) tuve que comentar una línea en el archivo /etc/my.cnf.d/cracklib_password_check.cnf :

;plugin-load-add=cracklib_password_check.so

luego reinicie el servicio mariadb:

systemctl restart mariadb.service
lav
fuente
4

Puede configurar esto en el archivo de configuración de mysql abrir /etc/my.cnfarchivo En este archivo, todas las líneas que configuran la política de contraseña hacen que los comentarios sean como

#validate-password=FORCE_PLUS_PERMANENT
#validate_password_length=10
#validate_password_mixed_case_count=1
#validate_password_number_count=1
#validate_password_policy=MEDIUM

Descomente y cambie el valor de las propiedades que desea cambiar.

Sharfi
fuente
2

Si desea hacer excepciones, puede aplicar el siguiente "pirateo". Se requiere un usuario con DELETEy INSERTprivilegio de mysql.plugintabla del sistema.

uninstall plugin validate_password;
SET PASSWORD FOR 'app' = PASSWORD('abcd');
INSTALL PLUGIN validate_password SONAME 'validate_password.so';

Descargo de responsabilidad de seguridad insípido: considere por qué hace que su contraseña sea más corta o más fácil y tal vez considere reemplazarla por una más compleja. Sin embargo, entiendo los momentos "son las 3AM y solo necesita trabajar", solo asegúrate de no construir un sistema de hacks, para que no seas pirateado

SeanDowney
fuente
2

Además de la respuesta de ktbos:

Modifiqué el archivo mysqld.cnf y mysql no pudo iniciarse. ¡Resultó que estaba modificando el archivo incorrecto!

Así que asegúrese de que el archivo que modifique contenga etiquetas de segmento como [mysqld_safe] y [mysqld]. Debajo de este último hice lo sugerido y agregué la línea:

validate_password_policy=LOW

Esto funcionó perfectamente para resolver mi problema de no requerir caracteres especiales dentro de la contraseña.

Paul Pritchard
fuente
1

Desinstalar:

mysql> uninstall plugin validate_password;

Un complemento desinstalado no se muestra por show plugins;

Instalar en pc:

mysql> install plugin validate_password SONAME 'validate_password.so';

Deshabilitado por la configuración:

[mysqld]
validate_password = OFF

La configuración solo puede deshabilitar un complemento si está instalado.

Antonio Bardazzi
fuente
0

Estaba teniendo un problema en Ubuntu 18.04 en Mysql. Cuando necesitaba crear un nuevo usuario, la política siempre era alta.

La forma en que descubrí cómo deshabilitar, para futuros colegas que vienen a investigar, fue baja.

Inicie sesión en el servidor mysql como root

mysql -h localhost -u root -p

Establecer el nuevo tipo de validación

SET GLOBAL validate_password_policy=0; //For Low

Reiniciar mysql

sudo service mysql restart
vic.py
fuente
1
Debe escribir este comando "SET ..." en el shell mysql. No para golpear la cáscara.
kodmanyagha
0

En algunas instalaciones, no puede ejecutar este comando hasta que haya restablecido la contraseña de root. No puede restablecer la contraseña de root hasta que ejecute este comando. Classic Catch-22.

Una solución que otros respondedores no mencionan es deshabilitar temporalmente el complemento a través de la configuración de mysql. En cualquiera my.cnf, en la [mysqld]sección, agregue:

skip-validate_password=1

y reinicie el servidor. Cambie la contraseña, vuelva a establecer el valor en 0 y reinicie nuevamente.

Oteo
fuente
Esto no funciona. ¿Puedes mencionar a qué versión de mysql se aplica esto?
Dave Doga Oz
0

Para referencias y el futuro, uno debe leer el documento aquí https://dev.mysql.com/doc/mysql-secure-deployment-guide/5.7/en/secure-deployment-password-validation.html

Entonces deberías editar tu mysqld.cnfarchivo, por ejemplo:

vim /etc/mysql/mysql.conf.d/mysqld.cnf

Luego, agregue en la parte [mysqld], lo siguiente:

plugin-load-add=validate_password.so
validate_password_policy=LOW

Básicamente, si edita su valor predeterminado, se verá así:

[mysqld]
#
# * Basic Settings
#
user            = mysql
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
port            = 3306
basedir         = /usr
datadir         = /var/lib/mysql
tmpdir          = /tmp
lc-messages-dir = /usr/share/mysql
skip-external-locking
plugin-load-add=validate_password.so
validate_password_policy=LOW

Luego, puede reiniciar:

systemctl restart mysql

Si olvida la plugin-load-add=validate_password.soparte, recibirá un error al reiniciar.

¡A disfrutar!

gabrielstuff
fuente
-1

Para mysql 8.0.7, vaya a su directorio mysql y luego use:

sudo bin/mysql_secure_installation

para configurar la opción de contraseña.

J Tang
fuente
-2
CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON *.* TO 'organizer'@'localhost'  WITH GRANT OPTION;

CREATE USER 'username'@'%' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON *.* TO 'organizer'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;

no es necesario detener / iniciar mysql

Pravin
fuente