Como desativo a validação de senha do mysql?

153

Parece que eu inadvertidamente carreguei o plugin de validação de senha no MySQL 5.7. Este plug-in parece forçar todas as senhas a cumprirem determinadas regras.

Eu gostaria de desligar isso.

Eu tentei alterar a variável validate_password_length conforme sugerido aqui sem sucesso.

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

Eu gostaria de descarregar o plugin ou neutralizá-lo de alguma forma.

Alex Ryan
fonte
9
Você já tentou alterar a configuração de diretiva? SET GLOBAL validate_password_policy=LOW;
Rikki
1
SET GLOBAL validate_password.policy=LOW;
belgacea

Respostas:

430

Aqui está o que eu faço para remover o plug-in de validação de senha:

  1. Efetue login no servidor mysql como root mysql -h localhost -u root -p
  2. Execute o seguinte comando sql: uninstall plugin validate_password;
  3. Se a última linha não funcionar (nova versão do mysql), você deve executar UNINSTALL COMPONENT 'file://component_validate_password';

Eu não recomendaria esta solução para um sistema de produção. Eu usei esta solução em uma instância mysql local apenas para fins de desenvolvimento.

Ray Hunter
fonte
18
para reativá-lo novamente, use o seguinte comando: INSTALL PLUGIN validate_password SONAME 'validate_password.so';
vchrizz
8
Para remover o plugin, você precisará configurar uma senha segura pelo menos uma vez via grep 'password' /var/log/mysqld.log | tail -1e depois /usr/bin/mysql_secure_installation. Depois de fazer isso, você pode executar os comandos do srayhunter acima e executar mysqladmin -u root -p'oldpassword' password newpasspara usar a senha que desejar.
specialk1st
2
O plug-in é chamado cracklib_password_checkno MariaDB atual.
Czerny
27
Nota: No MySQL 8.0.4, o plugin validate_password foi reimplementado como o componente validate_password. Em vez da consulta nº 2 acima, execute:UNINSTALL COMPONENT 'file://component_validate_password';
Aaron Cicali 25/04
4
mysql> SET GLOBAL validate_password_policy = 0;
JREAM 11/11
41

Estou usando o MySQL v 8.0.12 e o comando para desativar o componente de validação de senha é:

UNINSTALL COMPONENT 'file://component_validate_password';

Para instalá-lo novamente, o comando é:

INSTALL COMPONENT 'file://component_validate_password';

Se você apenas deseja alterar a política do plug-in de validação de senha:

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
fonte
34

Com base na resposta de Sharfi, edite o arquivo /etc/my.cnf e adicione apenas esta linha:

validate_password_policy=LOW

Isso deve neutralizar suficientemente a validação, conforme solicitado pelo OP. Você provavelmente desejará reiniciar o mysqld após esta alteração. Dependendo do seu sistema operacional, seria algo como:

sudo service mysqld restart

validate_password_policy aceita os valores 0, 1 ou 2 ou as palavras LOW, MEDIUM e STRONG que correspondem a esses números. O padrão é MEDIUM (1), que requer que as senhas contenham pelo menos uma letra maiúscula, uma letra minúscula, um dígito e um caractere especial, e que o comprimento total da senha seja de pelo menos 8 caracteres. Mudar para LOW, como sugiro aqui, verificará apenas o comprimento, que, se não tiver sido alterado através de outros parâmetros, verificará um comprimento de 8. Se você também deseja diminuir esse limite, também pode adicionar validate_password_length em o arquivo my.cnf.

Para mais informações sobre os níveis e detalhes, consulte o documento mysql .


Para o MySQL 8, a propriedade mudou de "validate_password_policy" para "validate_password.policy". Veja o documento mysql atualizado para as informações mais recentes.

ktbos
fonte
6
Se você só precisa de uma mudança temporária, para permitir que uma única senha para ser configurado, você poderia usarSET GLOBAL validate_password_policy=LOW;
Rikki
1
Esta é uma solução melhor do que remover o próprio módulo.
Mrugesh Mistry
2
mysql: variável desconhecida 'validate_password_policy = LOW'
Amalgovinus
2
Parece que o nome da variável mudou no MySQL mais recente. @Amalgovinus, tente usar o nome da variável "validate_password.policy" e veja se isso funciona para você. E, se houver, atualizarei minha resposta.
Ktbos
6

Para desativar as verificações de senha no mariadb-10.1.24 (Fedora 24), tive que comentar uma linha no arquivo /etc/my.cnf.d/cracklib_password_check.cnf :

;plugin-load-add=cracklib_password_check.so

reinicie o serviço mariadb:

systemctl restart mariadb.service
lav
fonte
4

Você pode configurar isso no arquivo de configuração mysql abrir /etc/my.cnfarquivo Neste arquivo, todas as linhas que estão configurando a política de senha fazem com que sejam comentadas 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

Remova o comentário e altere o valor das propriedades que você deseja alterar.

Sharfi
fonte
2

Se você deseja fazer exceções, pode aplicar o seguinte "hack". Requer um usuário DELETEe INSERTprivilégio para a mysql.plugintabela do sistema.

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

Isenção de responsabilidade branda: Considere por que você está tornando sua senha mais curta ou fácil e talvez substitua-a por uma que seja mais complexa. No entanto, eu entendo os momentos "são 3 da manhã e só precisa funcionar", apenas certifique-se de não criar um sistema de hacks, para que você não seja invadido

SeanDowney
fonte
2

Após a resposta do ktbos:

Modifiquei o arquivo mysqld.cnf e o mysql falhou ao iniciar. Acabou que eu estava modificando o arquivo errado!

Portanto, verifique se o arquivo que você modifica contém tags de segmento como [mysqld_safe] e [mysqld]. Sob o último, fiz como sugerido e adicionei a linha:

validate_password_policy=LOW

Isso funcionou perfeitamente para resolver meu problema de não exigir caracteres especiais na senha.

Paul Pritchard
fonte
1

Desinstalar:

mysql> uninstall plugin validate_password;

Um plug-in desinstalado não é exibido por show plugins;

Instalar:

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

Desabilitado pela configuração:

[mysqld]
validate_password = OFF

Um plug-in pode ser desativado pela configuração somente se instalado.

Antonio Bardazzi
fonte
0

Eu estava tendo um problema no Ubuntu 18.04 no Mysql. Quando eu precisava criar um novo usuário, a política era sempre alta.

A maneira como descobri como desativar, para futuros colegas que vêm investigar, foi baixa.

Efetue login no servidor mysql como root

mysql -h localhost -u root -p

Defina o novo tipo de validação

SET GLOBAL validate_password_policy=0; //For Low

Reinicie o mysql

sudo service mysql restart
vic.py
fonte
1
Você deve escrever este comando "SET ..." no shell do mysql. Não bater na casca.
kodmanyagha
0

Em algumas instalações, você não pode executar este comando até redefinir a senha root. Você não pode redefinir a senha root até executar este comando. Catch-22 clássico.

Uma solução não mencionada por outros respondedores é desativar temporariamente o plug-in através da configuração do mysql. Em qualquer um my.cnf, na [mysqld]seção, adicione:

skip-validate_password=1

e reinicie o servidor. Altere a senha e defina o valor novamente como 0 e reinicie novamente.

Otheus
fonte
isso não funciona. Você pode mencionar a qual versão do mysql isso se aplica?
Dave Doga Oz
0

Para referências e o futuro, leia o documento aqui https://dev.mysql.com/doc/mysql-secure-deployment-guide/5.7/en/secure-deployment-password-validation.html

Então você deve editar seu mysqld.cnfarquivo, por exemplo:

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

Em seguida, adicione na parte [mysqld] o seguinte:

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

Basicamente, se você editar seu padrão, ele se parecerá com:

[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

Em seguida, você pode reiniciar:

systemctl restart mysql

Se você esquecer a plugin-load-add=validate_password.sopeça, ocorrerá um erro na reinicialização.

Aproveitar !

gabrielstuff
fonte
-1

Para o mysql 8.0.7, vá para o diretório mysql e use:

sudo bin/mysql_secure_installation

para configurar a opção de senha.

J Tang
fonte
-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;

não é necessário parar / iniciar o mysql

Pravin
fonte