Sua senha não atende aos requisitos atuais da política

148

Eu quero criar um novo usuário no mysql com sintaxe:

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

Mas ele retorna um erro:

Sua senha não atende aos requisitos atuais da política.

Eu tentei muitas senhas, mas elas não funcionam. Como posso consertar isso?

Nguyen
fonte
1
Defina o nível da política de senha mais baixo. Dê uma olhada aqui: dev.mysql.com/doc/refman/5.6/en/…
Fjarlaegur
4
Como está sua política de senhas? Você pode verificar as variáveis ​​que foram configuradas para o seu módulo de validação de senha usandoSHOW VARIABLES LIKE 'validate_password%'
JNevill 29/17/17
Obrigado! Defino o nível da política de senha mais baixo e ele funciona.
Nguyen
1
Eu resolvi meu problema usandoUNINSTALL COMPONENT 'file://component_validate_password';
princebillyGK

Respostas:

244

Por causa da sua senha. Você pode ver as métricas de configuração de validação de senha usando a seguinte consulta no cliente MySQL:

SHOW VARIABLES LIKE 'validate_password%';

A saída deve ser algo assim:

+--------------------------------------+-------+
| 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     |
+--------------------------------------+-------+

então você pode definir o nível da política de senha mais baixo, por exemplo:

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

verifique a documentação do MySQL .

Hung Nguyen
fonte
31
Você deve citar a documentação oficial do MySQL , não um vídeo do YouTube, pelo amor de Deus.
Marquês de Lorne
26
Use o seguinte comando para usar 'password' como Senha para a máquina de desenvolvimento:SET GLOBAL validate_password_policy = 0;
Mahmudul Hasan Shohag
4
SET GLOBAL validate_password.length = 6; SET GLOBAL validate_password.number_count = 0; Atualizada!!
BeatingBytes
6
é apenas um poucoSET GLOBAL validate_password.policy = 0;
iamtodor 18/06/19
1
Isso foi útil porque na verdade me mostrou por que minha senha longa de 30 caracteres era "fraca" (nenhum caractere especial). Consegui remover o requisito de caractere especial e aumentar o comprimento mínimo de 8 para 20. #
535 andrewtweber
68

NOTA: Essa pode não ser uma solução segura. Mas se você estiver trabalhando em um ambiente de teste, só precisa de uma solução rápida e nem se preocupa com as configurações de segurança. Esta é uma solução rápida.

O mesmo problema aconteceu comigo quando executei o "mysql_secure_installation" e modifiquei o nível de segurança da senha para 'médio'.

Eu ignorei o erro executando as seguintes ações:

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

certifique-se de reinstalar o plug-in "validate_password", se necessário.

kennyut
fonte
3
Terrível solução. Você deve abaixar o nível para o que mais lhe convém, e não remover toda a instalação.
Marquês de Lorne
10
Obrigado por publicar. correção rápida e suja. exatamente como o que o @kennyut diz: certifique-se de reinstalar o plug-in "validate_password"
Meng Zhao
52

Se você não se importa com a política de senha. Você pode configurá-lo como LOW emitindo abaixo do comando mysql:

mysql> SET GLOBAL validate_password_policy=LOW;
singh
fonte
8
deveria ser em SET GLOBAL validate_password.policy=LOW;vez disso
songyy
22

Para MySQL 8 *

SET GLOBAL validate_password.policy=LOW

Link de referência para explicar a política - Clique aqui

Philip
fonte
20

Depois de executar o comando sudo mysql_secure_installation.

  1. Execute sudo mysqlpara entrar no prompt do mysql.
  2. Execute isso SELECT user,authentication_string,plugin,host FROM mysql.user;para verificar se o usuário root possui como plugin auth_socket .
  3. Em seguida, execute uninstall plugin validate_password;a remoção de privilégios antes de executar isso ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';Certifique-se de alterar a senha para uma senha forte.

NOTA: verifique este link https://www.digitalocean.com/community/tutorials/how-to-install-mysql-on-ubuntu-18-04 para obter mais ajuda

Leo Sammy
fonte
11

Você precisa alterar a política de senha do MySQL para LOW.

faça login como root

mysql -u root -p

mudar política

SET GLOBAL validate_password_policy=LOW;

ou

SET GLOBAL validate_password_policy=0;

Saída

exit

reinicie o serviço MySQL

sudo service mysqld restart

Você precisa alterar a política de senha do MySQL para Baixa = 0 / Média = 1 / Alta = 2.

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

Para o MySql 8, você pode usar o seguinte 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
fonte
7

Na minha opinião, definir "validate_password_policy" como "low" ou desinstalar o "validate password plugin" não é a coisa certa a fazer. Você nunca deve comprometer a segurança do seu banco de dados (a menos que realmente não se importe). Eu estou querendo saber por que as pessoas estão sugerindo essas opções quando você simplesmente pode escolher uma boa senha.

Para superar esse problema, executei o seguinte comando no mysql: SHOW VARIABLES LIKE 'validate_password%' conforme sugerido por @JNevill. Meu "validate_password_policy" foi definido como Médio, juntamente com outras coisas. Aqui está a captura de tela de sua execução: Validar política de senha

O resultado é auto-explicativo. Para uma senha válida (quando a política de Senha estiver definida como média):

  • A senha deve ter pelo menos 8 caracteres
  • A contagem de maiúsculas e minúsculas é 1 (pelo menos 1 letra pequena e 1 letra maiúscula)
  • A contagem de números é 1
  • A contagem mínima de caracteres especiais é 1

Portanto, uma senha válida deve obedecer à política. Exemplos de senha válida para as regras acima talvez:

  • Student123 @
  • NINZAcoder $ 100
  • demoPass # 00

Você pode escolher qualquer combinação, desde que satisfaça a política.

Para outros "validate_password_policy", você pode simplesmente procurar nos valores opções diferentes e escolher sua senha de acordo (não tentei por "STRONG" ).

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

Harish Kumar Saini
fonte
2
É FORTE para a política de senha principal.
Steam jogador
Também não entendo pessoas que sugerem fazer o downgrade validate_password_policypara LOW. Os usuários podem criar ou gerar perfeitamente uma senha forte, cumprindo os requisitos. Se você não tiver certeza de como fazer isso, use uma ferramenta para isso. Por exemplo, github.com/joseluisq/rpasswd
joseluisq
3

Etapa 1: verifique seu plug-in de autenticação padrão

SHOW VARIABLES LIKE 'default_authentication_plugin';

Etapa 2: atendendo aos requisitos de validação de senha

SHOW VARIABLES LIKE 'validate_password%';

Etapa 3: configurando seu usuário com os requisitos de senha corretos

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

Eu tive o mesmo problema e a resposta está bem na sua frente, lembre-se de quando você executou o script enquanto instalava o mysql como

sudo mysql_secure_installation

lá em algum lugar você escolheu qual tipo de senha você gostaria de escolher

Existem três níveis de política de validação de senha:

Comprimento BAIXO> = 8 Comprimento MÉDIO> = 8, maiúsculas e minúsculas e caracteres especiais FORTE Comprimento> = 8, maiúsculas e minúsculas, caracteres especiais e arquivo de dicionário

Digite 0 = BAIXO, 1 = MÉDIO e 2 = FORTE:

você tem que dar uma senha para a mesma política

Aqui estão alguns exemplos de exemplo de suas senhas:
para o tipo 0: abcdabcd
para o tipo 1: abcd1234
para o tipo 2:ancd@1234

Anurag Sahu
fonte
2

Para usuários do Laravel com esse problema no MySQL 8.0.x, adicione

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

ao seu arquivo database.php como abaixo:

// 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',
            ],
        ],
    ],

Consertou para mim.

Jekayode
fonte
2

O problema é que sua senha não corresponde às regras de validação de senha. Você pode seguir as etapas abaixo para resolver seu problema.

Você pode simplesmente ver a matriz de configuração da validação de senha digitando o código abaixo.

mysql-> SHOW VARIABLES LIKE 'validate_password%';

Então, em sua matriz você pode encontrar abaixo variáveis com os valores correspondentes e lá você tem que verificar validate_password_length, validate_password_number_counte validate_password_policy.

Verifique os valores usados ​​para essas variáveis. Certifique-se de validate_password_lengthque não deve ser maior que 6. Você pode configurá-lo para 6 usando o código abaixo.

SET GLOBAL validate_password_length = 6;

E depois disso, você precisa definir o validate_password_number_count0. Faça isso usando o código abaixo.

SET GLOBAL validate_password_number_count = 0;

Finalmente, você deve configurá-lo validate_password_policypara low. Ter isso como Mediumou Highnão permitirá senhas menos seguras. Defina isso como lowabaixo do código.

SET GLOBAL validate_password_policy=LOW;
Dushan
fonte
1

Definir senha que atenda às 7 regras de validação do MySQL

por exemplo:- d_VX>N("xn_BrD2y

Tornar os critérios de validação um pouco mais simples resolverá o problema

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

Mas recomendado uma senha forte é uma solução correta

mujuonly
fonte
0

Essa mensagem de erro não tem nada a ver com a senha armazenada na sua tabela. Também ocorre se você digitar (no console SQL)

"selecione a senha ('123456789')"

ou se

"selecione a senha ('A123456789')"

ou se

"selecione a senha ('A! 123456789')"

Se você digitar

"selecione a senha ('A! a123456789')"

então vai funcionar. Basta usar letras grandes e pequenas, caracteres especiais e números para criar sua senha.

Você pode desabilitar essas verificações no my.cnf, mas você terá um risco à segurança!

no [mysqld] adicione:

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

não funcionou para mim na nova instalação do mysqld no ubuntu, tive que adicionar o seguinte: ao /etc/mysql/mysql.conf.d/mysqld.cnf ou o servidor não foi iniciado (acho que o plug-in não carregou no quando eu simplesmente o adicionei sem a diretiva 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
fonte
0

Há alguns momentos em que encontrar uma solução rápida é ótimo. Mas se você pode evitar restrições de senhas reduzidas, isso pode impedir que você tenha grandes dores de cabeça no futuro.

O próximo link é da documentação oficial https://dev.mysql.com/doc/refman/5.6/en/validate-password.html , onde eles expõem um exemplo exatamente como o seu e o resolvem.

O único problema que você tem é que sua senha não é forte o suficiente para atender à política mínima real (não recomendada para remoção). Então você pode tentar senhas diferentes, como você pode ver no exemplo.

cristão
fonte
0

MOSTRAR VARIÁVEIS COMO 'validate_password%';

insira a descrição da imagem aqui

mysql> SET GLOBAL validate_password.length = 6;

mysql> SET GLOBAL validate_password.number_count = 0;

mysql> SET GLOBAL validate_password.policy = BAIXO;

MOSTRAR VARIÁVEIS COMO 'validate_password%';

insira a descrição da imagem aqui

hizlan erpak
fonte
-1
mysql> SET GLOBAL validate_password.policy = 0;
CollinsKe
fonte
1
Embora esse código possa resolver o problema do OP, é melhor incluir uma explicação sobre como o seu código soluciona o problema do OP. Dessa forma, futuros visitantes podem aprender com sua postagem e aplicá-la ao próprio código. O SO não é um serviço de codificação, mas um recurso para o conhecimento. Além disso, respostas completas de alta qualidade têm mais probabilidade de serem votadas. Esses recursos, juntamente com o requisito de que todas as postagens sejam independentes, são alguns dos pontos fortes do SO como plataforma, que o diferencia dos fóruns. Você pode editar para adicionar informações adicionais e / ou complementar suas explicações com a documentação de origem.
SherylHohman