Je dois créer un utilisateur avec un mot de passe de six caractères dans le nouveau MySQL sur mon mac. Je sais que le réglage le plus bas de la version 5.7 n'autorise que huit caractères. Y a-t-il un moyen de contourner cela?
Je tape CREATE USER 'newsier'@'localhost' IDENTIFIED BY 'special'
Il génère l'erreur
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
Vous utilisez le plugin de validation password . Par défaut, il ne permet que 8 caractères et des mots de passe plus longs. Parce qu'il ne peut pas vérifier la valeur d'un hachage, @RiggsFolly a raison de dire que le pré-hachage du mot de passe fonctionnera.
Toutefois, si vous souhaitez modifier les options , vous devez définir la valeur de la variable système validate_password_length
. Vous pouvez le faire dans le fichier de configuration ou:
SET GLOBAL validate_password_length=6;
Commencez par vous connecter avec mysql -u root -p
et vérifiez les règles de stratégie actuelles en:
# SHOW VARIABLES LIKE 'validate_password%';
+--------------------------------------+--------+
| Variable_name | Value |
+--------------------------------------+--------+
| validate_password_dictionary_file | |
| validate_password_length | 5 |
| validate_password_mixed_case_count | 1 |
| validate_password_number_count | 1 |
| validate_password_policy | MEDIUM |
| validate_password_special_char_count | 1 |
+--------------------------------------+--------+
Ensuite, vous pouvez modifier l’une des variables ci-dessus à votre guise:
# SET GLOBAL validate_password_length = 5;
# SET GLOBAL validate_password_number_count = 0;
# SET GLOBAL validate_password_mixed_case_count = 0;
# SET GLOBAL validate_password_special_char_count = 0;
Enfin, vous pouvez créer une base de données et un utilisateur y accédant avec un mot de passe plus simple:
# CREATE DATABASE test1;
# GRANT ALL PRIVILEGES ON test1.* TO user1@localhost IDENTIFIED BY "pass1";
# FLUSH PRIVILEGES;
Après cela, vous pouvez vous connecter avec mysql -u user1 -p test1
en utilisant le mot de passe pass1
MySQL 5.7+ possède par défaut un système de validation Password. Si vous ne voulez pas vous conformer strictement à la stratégie et devez attribuer la vôtre, désactivez simplement la validation du mot de passe et redémarrez le processus mysqld.
Éditez le fichier my.cnf:
vi /etc/my.cnf
dans [mysqld]
validate-password=off
Enregistrez le fichier puis restart le processus
Sudo service mysqld restart
or
systemctl restart mysqld
puis changez le mot de passe racine en procédant comme suit et suivez les étapes pour ne pas lancer d'exception pour le mot de passe racine.
mysql_secure_installation
or
/usr/bin/mysql_secure_installation
Si vous utilisez installation pour le première fois et souhaitez connaître le mot de passe temporaire, utilisez ce qui suit pour trouver le mot de passe premier fois:
grep 'temporary password' /var/log/mysqld.log
Faites-moi savoir vos commentaires sur le même, dans la boîte de commentaire ci-dessous.
Je crois que vous pouvez le contourner en utilisant un mot de passe pré-haché comme ceci: -
CREATE USER 'newsier'@'localhost' IDENTIFIED WITH mysql_native_password
AS '*0D3CED9BEC10A777AEC23CCC353A8C08A633045E';
Mais cela signifie que vous devez hacher correctement la variable special
avant de pouvoir définir un mot de passe que vous pourrez ensuite utiliser en version texte.
Il est possible de désactiver entièrement le mot de passe "plug-in" qui semble trop strict en exécutant ce qui suit: uninstall plugin validate_password
Si vous en avez besoin, vous pouvez le réactiver via: INSTALL PLUGIN validate_password SONAME 'validate_password.so'
Vous pouvez éventuellement le désactiver, définir votre mot de passe et le réactiver:
uninstall plugin validate_password;
CREATE USER 'newsier'@'localhost' IDENTIFIED BY 'special';
INSTALL PLUGIN validate_password SONAME 'validate_password.so';
Lectures complémentaires:
Vérifier les règles de stratégie de mot de passe en cours par
SHOW VARIABLES LIKE 'validate_password%';
Définissez maintenant la nouvelle valeur de ces variables:
SET GLOBAL validate_password_length = 6 // that you like
SET GLOBAL validate_password_policy = 'LOW'