Votre mot de passe ne répond pas aux exigences de la politique actuelle

148

Je veux créer un nouvel utilisateur dans mysql avec la syntaxe:

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

Mais cela renvoie une erreur:

Votre mot de passe ne répond pas aux exigences de la politique actuelle.

J'ai essayé de nombreux mots de passe mais ils ne fonctionnent pas. Comment puis-je réparer cela?

Nguyen
la source
1
Définissez le niveau de stratégie de mot de passe plus bas. Jetez un oeil ici: dev.mysql.com/doc/refman/5.6/en/…
Fjarlaegur
4
Quelle est votre politique de mot de passe configurée? Vous pouvez vérifier les variables qui ont été configurées pour votre module de validation de mot de passe en utilisantSHOW VARIABLES LIKE 'validate_password%'
JNevill
Merci! J'ai défini le niveau de politique de mot de passe plus bas et cela fonctionne.
Nguyen
1
J'ai résolu mon problème en utilisantUNINSTALL COMPONENT 'file://component_validate_password';
princebillyGK

Réponses:

245

A cause de votre mot de passe. Vous pouvez voir les métriques de configuration de validation de mot de passe à l'aide de la requête suivante dans le client MySQL:

SHOW VARIABLES LIKE 'validate_password%';

La sortie devrait être quelque chose comme ça:

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

alors vous pouvez définir le niveau de stratégie de mot de passe plus bas, par exemple:

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

consultez la documentation MySQL .

Hung Nguyen
la source
31
Vous devriez citer la documentation officielle de MySQL , pas une vidéo YouTube, pour l'amour du ciel.
Marquis of Lorne
26
Utilisez la commande suivante pour utiliser 'password' comme mot de passe pour la machine de développement:SET GLOBAL validate_password_policy = 0;
Mahmudul Hasan Shohag
4
SET GLOBAL validate_password.length = 6; SET GLOBAL validate_password.number_count = 0; actualisé!!
BeatingBytes
6
c'est juste plutôtSET GLOBAL validate_password.policy = 0;
iamtodor
1
Cela a été utile car cela m'a montré pourquoi mon mot de passe de 30 caractères était "faible" (pas de caractère spécial). J'ai pu supprimer l'exigence de caractère spécial et augmenter la longueur minimale de 8 à 20.
andrewtweber
68

REMARQUE: cela peut ne pas être une solution sécurisée. Mais si vous travaillez sur un environnement de test, vous avez juste besoin d'une solution rapide et ne vous souciez même pas des paramètres de sécurité. C'est une solution rapide.

Le même problème m'est arrivé lorsque j'ai exécuté "mysql_secure_installation" et que j'ai modifié le niveau de sécurité du mot de passe sur "moyen".

J'ai contourné l'erreur en exécutant les éléments suivants:

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

assurez-vous de réinstaller le plugin "validate_password" si nécessaire.

Kennyut
la source
3
Terrible solution. Vous devez baisser le niveau à ce qui vous convient, et non supprimer l'ensemble de l'installation.
Marquis of Lorne
10
Merci d'avoir posté. solution rapide et sale. tout comme ce que @kennyut dit: assurez-vous de réinstaller le plugin "validate_password"
Meng Zhao
52

Si vous ne vous souciez pas de la politique de mot de passe. Vous pouvez le définir sur LOW en émettant la commande mysql ci-dessous:

mysql> SET GLOBAL validate_password_policy=LOW;
chanter
la source
8
devrait être à la SET GLOBAL validate_password.policy=LOW;place
songyy
22

Pour MySQL 8 *

SET GLOBAL validate_password.policy=LOW

Lien de référence pour expliquer la politique - Cliquez ici

Philippe
la source
20

Après avoir exécuté la commande sudo mysql_secure_installation.

  1. Exécutez sudo mysqlpour entrer dans l'invite mysql.
  2. Exécutez ceci SELECT user,authentication_string,plugin,host FROM mysql.user;pour vérifier que l'utilisateur root a comme plugin auth_socket .
  3. Ensuite, exécutez uninstall plugin validate_password;pour supprimer les privilèges avant d'exécuter ceci. ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';Assurez-vous de remplacer le mot de passe par un mot de passe fort.

REMARQUE: consultez ce lien https://www.digitalocean.com/community/tutorials/how-to-install-mysql-on-ubuntu-18-04 pour plus d'aide

Leo Sammy
la source
11

Vous devez changer la politique de mot de passe MySQL sur LOW.

connectez-vous en tant que root

mysql -u root -p

changer de politique

SET GLOBAL validate_password_policy=LOW;

ou

SET GLOBAL validate_password_policy=0;

sortie

exit

redémarrer le service MySQL

sudo service mysqld restart

Vous devez changer la politique de mot de passe MySQL en Faible = 0 / Moyen = 1 / Élevé = 2.

SET GLOBAL validate_password_policy=0;
SET GLOBAL validate_password_policy=1;    
SET GLOBAL validate_password_policy=2;
Ruchira
la source
8

Pour MySql 8, vous pouvez utiliser le script suivant:

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
la source
7

À mon avis, régler "validate_password_policy" sur "low" ou désinstaller le "validate password plugin" n'est pas la bonne chose à faire. Vous ne devez jamais compromettre la sécurité de votre base de données (sauf si vous ne vous en souciez pas vraiment). Je me demande pourquoi les gens suggèrent même ces options alors que vous pouvez simplement choisir un bon mot de passe.

Pour surmonter ce problème, j'ai exécuté la commande suivante dans mysql: SHOW VARIABLES LIKE 'validate_password%' comme suggéré par @JNevill. Mon "validate_password_policy" a été défini sur Medium, avec d'autres choses. Voici la capture d'écran de son exécution: Valider la politique de mot de passe

Le résultat est explicite. Pour un mot de passe valide (lorsque la stratégie de mot de passe est définie sur moyen):

  • Le mot de passe doit contenir au moins 8 caractères
  • Le nombre de cas mixtes est de 1 (au moins 1 lettre en minuscule et 1 lettre en majuscules)
  • Le nombre de nombres est 1
  • Le nombre minimum de caractères spéciaux est de 1

Un mot de passe valide doit donc obéir à la politique. Des exemples de mot de passe valide pour les règles ci-dessus peuvent être:

  • Étudiant123 @
  • NINZAcoder 100 $
  • démoPass # 00

Vous pouvez choisir n'importe quelle combinaison tant qu'elle satisfait à la politique.

Pour les autres "validate_password_policy", vous pouvez simplement regarder les valeurs des différentes options et choisir votre mot de passe en conséquence (je n'ai pas essayé pour "STRONG" ).

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

Harish Kumar Saini
la source
2
C'est FORT pour la politique de mot de passe supérieure.
Joueur Steam
Je ne comprends pas non plus les gens qui suggèrent de revenir validate_password_policyen arrière LOW. Les utilisateurs peuvent parfaitement créer ou générer un mot de passe fort répondant à l'exigence. Si vous ne savez pas comment faire, utilisez un outil pour cela. Par exemple github.com/joseluisq/rpasswd
joseluisq
3

Étape 1: vérifiez votre plugin d'authentification par défaut

SHOW VARIABLES LIKE 'default_authentication_plugin';

Étape 2: répondre à vos exigences de validation de mot de passe

SHOW VARIABLES LIKE 'validate_password%';

Étape 3: configuration de votre utilisateur avec les exigences de mot de passe correctes

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

J'ai eu le même problème et la réponse est juste devant vous, rappelez-vous quand vous avez exécuté le script lors de l'installation de mysql comme

sudo mysql_secure_installation

là, quelque part, vous avez choisi le type de mot de passe que vous aimeriez choisir

Il existe trois niveaux de stratégie de validation de mot de passe:

LOW Longueur> = 8 MEDIUM Longueur> = 8, numérique, casse mixte et caractères spéciaux STRONG Longueur> = 8, numérique, casse mixte, caractères spéciaux et fichier dictionnaire

Veuillez saisir 0 = FAIBLE, 1 = MOYEN et 2 = FORT:

vous devez donner un mot de passe à la même politique

voici quelques exemples d'exemples de vos mots de passe:
pour le type 0: abcdabcd
pour le type 1: abcd1234
pour le type 2:ancd@1234

Anurag Sahu
la source
2

Pour les utilisateurs de Laravel ayant ce problème avec MySQL 8.0.x, ajoutez

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

dans votre fichier database.php comme ci-dessous:

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

Il l'a corrigé pour moi.

Jekayode
la source
2

Le problème est que votre mot de passe ne correspondra pas aux règles de validation de mot de passe. Vous pouvez simplement suivre les étapes ci-dessous pour résoudre votre problème.

Vous pouvez simplement voir la matrice de configuration de validation de mot de passe en tapant ci-dessous le code.

mysql-> SHOW VARIABLES LIKE 'validate_password%';

Ensuite, dans votre matrice, vous pouvez trouver ci-dessous les variables avec les valeurs correspondantes et vous devez vérifier validate_password_length, validate_password_number_countet validate_password_policy.

Vérifiez les valeurs utilisées pour ces variables. Assurez-vous que votre validate_password_lengthne doit pas être supérieur à 6. Vous pouvez le définir sur 6 en utilisant le code ci-dessous.

SET GLOBAL validate_password_length = 6;

Et après cela, vous devez définir validate_password_number_countsur 0. Faites-le en utilisant le code ci-dessous.

SET GLOBAL validate_password_number_count = 0;

Enfin, vous devez vous mettre validate_password_policyà low. Avoir cela comme Mediumou Highne permettra pas vos mots de passe moins sécurisés. Réglez-le lowpar le code ci-dessous.

SET GLOBAL validate_password_policy=LOW;
Dushan
la source
1

Définir un mot de passe qui satisfait 7 règles de validation MySql

par exemple:- d_VX>N("xn_BrD2y

Rendre les critères de validation un peu plus simples résoudra le problème

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

Mais recommandé un mot de passe fort est une solution correcte

mujuonly
la source
0

Ce message d'erreur n'a rien à voir avec le mot de passe stocké dans votre table. Cela se produit également si vous tapez (sur la console SQL)

"sélectionner le mot de passe ('123456789')"

ou si

"sélectionner le mot de passe ('A123456789')"

ou si

"sélectionner le mot de passe ('A! 123456789')"

Si vous tapez

"sélectionner le mot de passe ('A! a123456789')"

alors cela fonctionnera. Utilisez simplement des lettres majuscules et minuscules, des caractères spéciaux et des chiffres pour créer votre mot de passe.

Vous pouvez désactiver ces vérifications dans my.cnf, mais vous aurez alors un risque de sécurité!

dans [mysqld] ajouter:

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
la source
0

n'a pas fonctionné pour moi sur la nouvelle installation ubuntu de mysqld, j'ai dû ajouter ceci: à /etc/mysql/mysql.conf.d/mysqld.cnf ou le serveur ne démarrerait pas (je suppose que le plugin ne s'est pas chargé au bon moment quand je l'ai simplement ajouté sans la directive 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
la source
0

Il y a des moments où trouver une solution rapide est formidable. Mais si vous pouvez éviter de baisser les restrictions de mots de passe, cela peut vous empêcher d'avoir de gros maux de tête à l'avenir.

Le lien suivant provient de la documentation officielle https://dev.mysql.com/doc/refman/5.6/en/validate-password.html , où ils exposent un exemple exactement comme le vôtre, et ils le résolvent.

Le seul problème que vous rencontrez est que votre mot de passe n'est pas assez fort pour satisfaire la politique minimale réelle (il n'est pas recommandé de le supprimer). Vous pouvez donc essayer différents mots de passe comme vous pouvez le voir dans l'exemple.

Christian
la source
0

SHOW VARIABLES LIKE 'validate_password%';

entrez la description de l'image ici

mysql> SET GLOBAL validate_password.length = 6;

mysql> SET GLOBAL validate_password.number_count = 0;

mysql> SET GLOBAL validate_password.policy = LOW;

SHOW VARIABLES LIKE 'validate_password%';

entrez la description de l'image ici

hizlan erpak
la source
-1
mysql> SET GLOBAL validate_password.policy = 0;
CollinsKe
la source
1
Bien que ce code puisse résoudre le problème du PO, il est préférable d'inclure une explication sur la façon dont votre code résout le problème du PO. De cette manière, les futurs visiteurs peuvent apprendre de votre publication et l'appliquer à leur propre code. SO n'est pas un service de codage, mais une ressource de connaissances. De plus, les réponses complètes et de haute qualité sont plus susceptibles d'être votées. Ces fonctionnalités, ainsi que l'exigence que tous les messages soient autonomes, sont quelques-unes des forces de SO en tant que plate-forme, qui le différencie des forums. Vous pouvez modifier pour ajouter des informations supplémentaires et / ou pour compléter vos explications avec la documentation source.
SherylHohman