Je veux créer un nouvel utilisateur dans mysql avec la syntaxe:
create user 'demo'@'localhost' identified by 'password';
Mais c'est une erreur. "votre mot de passe ne satisfait pas aux exigences actuelles de la politique" . J'essaie plusieurs mots de passe mais cela ne fonctionne pas Alors, comment puis-je résoudre ce problème?
A cause de votre mot de passe. Vous pouvez voir password valider les mesures de configuration à l'aide de SHOW VARIABLES LIKE 'validate_password%';
dans mysql
ou vous pouvez définir un niveau de stratégie de mot de passe inférieur, par exemple:
SET GLOBAL validate_password_length = 6;
SET GLOBAL validate_password_number_count = 0;
Vous pouvez regarder cette vidéo: ERREUR 1819 (HY000): votre mot de passe ne répond pas aux exigences actuelles de la politique - Mysql (Youtube)
REMARQUE: cela pourrait ne pas être une solution sécurisée. Mais si vous travaillez dans un environnement de test, vous avez simplement 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 modifié le niveau de sécurité du mot de passe en «moyen».
J'ai contourné l'erreur en exécutant ce qui suit:
mysql -h localhost -u root -p
mysql>uninstall plugin validate_password;
assurez-vous de réinstaller le plugin "validate_password" si nécessaire.
Si vous ne vous souciez pas de ce que la politique de mot de passe est. Vous pouvez le définir sur LOW en émettant ci-dessous la commande mysql:
mysql> SET GLOBAL validate_password_policy=LOW;
Après avoir exécuté la commande Sudo mysql_secure_installation
.
Sudo mysql
pour entrer dans l'invite mysql.SELECT user,authentication_string,plugin,Host FROM mysql.user;
pour vérifier que l’utilisateur racine a le plugin auth_socket.uninstall plugin validate_password;
pour supprimer les privilèges avant d’exécuter This ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
Vérifiez que mot de passe est remplacé 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 obtenir de l'aide supplémentaire
Pour MySQL 8 *
SET GLOBAL validate_password.policy=LOW
Lien de référence pour expliquer la politique - Cliquez ici
Étape 1: vérifiez votre plugin d'authentification par défaut
SHOW VARIABLES LIKE 'default_authentication_plugin';
Étape 2: Répondre aux exigences de validation de votre mot de passe
SHOW VARIABLES LIKE 'validate_password%';
Étape 3: configurer votre utilisateur avec les exigences de mot de passe correctes
CREATE USER '<your_user>'@'localhost' IDENTIFIED WITH '<your_default_auth_plugin>' BY 'password';
J'ai eu le même problème et la réponse est juste en face de vous, rappelez-vous quand vous avez exécuté le script lors de l'installation de mysql comme
Sudo mysql_secure_installation
il y a quelque part vous avez choisi quel type de mot de passe voudriez-vous choisir
Il existe trois niveaux de stratégie de validation de mot de passe:
LOW Longueur> = 8 MEDIUM Longueur> = 8, caractères numériques, majuscules et caractères spéciaux FORT Longueur> = 8, numérique, majuscules, caractères spéciaux et fichier de dictionnaire
Veuillez entrer 0 = FAIBLE, 1 = MOYEN et 2 = FORT:
vous devez donner un mot de passe à la même politique
voici quelques exemples de mots de passe:
pour le type 0: abcdabcd
pour le type 1: abcd1234
pour le type 2: ancd@1234
Pour les utilisateurs de Laravel rencontrant 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',
],
],
],
Cela a résolu le problème pour moi.
Selon moi, définir le "validate_password_policy" à "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 (à moins que vous ne vous en souciiez pas). 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 éléments. 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):
Donc, un mot de passe valide doit obéir à la politique. Des exemples de mot de passe valide pour les règles ci-dessus peuvent être:
Vous pouvez choisir n'importe quelle combinaison à condition de respecter la politique.
Pour les autres "validate_password_policy" vous pouvez simplement rechercher les valeurs pour différentes options et choisir votre mot de passe en conséquence (je n'ai pas essayé de "HIGH" ).
Ce message d'erreur n'a rien à voir avec le mot de passe stocké dans votre table. Il se produit également si vous tapez (sur la console SQL)
"sélectionnez le mot de passe ('123456789')"
ou si
"sélectionnez le mot de passe ('A123456789')"
ou si
"sélectionnez le mot de passe ('A! 123456789')"
Si vous tapez
"sélectionnez le mot de passe ('A! a123456789')"
alors ça va marcher. Utilisez simplement des gros + petits caractères, 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
Le problème est que votre mot de passe ne correspond pas aux règles de validation du 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 des variables avec les valeurs correspondantes et y vérifier validate_password_length
, validate_password_number_count
et validate_password_policy
.
Vérifiez les valeurs utilisées pour ces variables. Assurez-vous que votre validate_password_length
ne soit pas supérieur à 6. Vous pouvez le définir à 6 à l'aide du code ci-dessous.
SET GLOBAL validate_password_length = 6;
Et ensuite, vous devez définir validate_password_number_count
sur 0. Utilisez le code ci-dessous.
SET GLOBAL validate_password_number_count = 0;
Enfin, vous devez définir validate_password_policy
sur low
. Avoir cela comme Medium
ou High
ne permettra pas vos mots de passe moins sécurisés. Réglez-le sur low
avec le code ci-dessous.
SET GLOBAL validate_password_policy=LOW;