Comment désactiver la validation du mot de passe mysql?

153

Il semble que j'ai chargé par inadvertance le plugin de validation de mot de passe dans MySQL 5.7. Ce plugin semble forcer tous les mots de passe à se conformer à certaines règles.

Je voudrais désactiver cette option.

J'ai essayé de changer la variable validate_password_length comme suggéré ici en vain.

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

Je voudrais soit décharger le plugin, soit le stériliser d'une manière ou d'une autre.

Alex Ryan
la source
9
Avez-vous essayé de modifier le paramètre de stratégie? SET GLOBAL validate_password_policy=LOW;
Rikki
1
SET GLOBAL validate_password.policy=LOW;
belgacea

Réponses:

430

Voici ce que je fais pour supprimer le plugin de validation du mot de passe:

  1. Connectez-vous au serveur mysql en tant que root mysql -h localhost -u root -p
  2. Exécutez la commande sql suivante: uninstall plugin validate_password;
  3. Si la dernière ligne ne fonctionne pas (nouvelle version de mysql), vous devez exécuter UNINSTALL COMPONENT 'file://component_validate_password';

Je ne recommanderais pas cette solution pour un système de production. J'ai utilisé cette solution sur une instance mysql locale à des fins de développement uniquement.

Ray Hunter
la source
18
pour le réactiver à nouveau, utilisez la commande suivante: INSTALL PLUGIN validate_password SONAME 'validate_password.so';
vchrizz
8
Pour supprimer le plugin, vous devrez configurer un mot de passe sécurisé au moins une fois via grep 'password' /var/log/mysqld.log | tail -1et ensuite /usr/bin/mysql_secure_installation. Après cela, vous pouvez exécuter les commandes de srayhunter ci-dessus, puis exécuter mysqladmin -u root -p'oldpassword' password newpasspour utiliser le mot de passe que vous souhaitez.
specialk1st
2
Le plugin est appelé cracklib_password_checkdans la MariaDB actuelle.
czerny
27
Remarque: dans MySQL 8.0.4, le plugin validate_password a été réimplémenté en tant que composant validate_password. Au lieu de la requête n ° 2 ci-dessus, exécutez:UNINSTALL COMPONENT 'file://component_validate_password';
Aaron Cicali
4
mysql> SET GLOBAL validate_password_policy = 0;
JREAM
41

J'utilise MySQL v 8.0.12 et la commande pour désactiver le composant de validation de mot de passe est:

UNINSTALL COMPONENT 'file://component_validate_password';

Pour le réinstaller, la commande est:

INSTALL COMPONENT 'file://component_validate_password';

Si vous souhaitez simplement modifier la politique du plugin de validation de mot de passe:

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

En vous basant sur la réponse de Sharfi, éditez le fichier /etc/my.cnf et ajoutez juste cette ligne:

validate_password_policy=LOW

Cela devrait suffisamment neutraliser la validation comme demandé par l'OP. Vous voudrez probablement redémarrer mysqld après ce changement. En fonction de votre système d'exploitation, cela ressemblerait à quelque chose comme:

sudo service mysqld restart

validate_password_policy prend les valeurs 0, 1 ou 2 ou les mots LOW, MEDIUM et STRONG qui correspondent à ces nombres. La valeur par défaut est MEDIUM (1) qui exige que les mots de passe contiennent au moins une lettre majuscule, une lettre minuscule, un chiffre et un caractère spécial, et que la longueur totale du mot de passe soit d'au moins 8 caractères. Le passage à LOW comme je le suggère ici ne vérifiera que la longueur, qui, si elle n'a pas été modifiée par d'autres paramètres, vérifiera une longueur de 8. Si vous souhaitez également raccourcir cette limite de longueur, vous pouvez également ajouter validate_password_length à le fichier my.cnf.

Pour plus d'informations sur les niveaux et les détails, consultez la doc mysql .


Pour MySQL 8, la propriété est passée de "validate_password_policy" à "validate_password.policy". Voir la documentation mysql mise à jour pour les dernières informations.

ktbos
la source
6
Si vous n'avez besoin que d'une modification temporaire, pour autoriser la définition d'un seul mot de passe, vous pouvez utiliserSET GLOBAL validate_password_policy=LOW;
Rikki
1
C'est une meilleure solution que de supprimer le module lui-même.
Mrugesh Mistry
2
mysql: variable inconnue 'validate_password_policy = LOW'
Amalgovinus
2
On dirait que le nom de la variable a changé dans la dernière version de MySQL. @Amalgovinus, essayez d'utiliser le nom de variable "validate_password.policy" à la place et voyez si cela fonctionne pour vous. Et si c'est le cas, je mettrai à jour ma réponse.
ktbos le
6

Pour désactiver les vérifications de mot de passe dans mariadb-10.1.24 (Fedora 24), j'ai dû commenter une ligne dans le fichier /etc/my.cnf.d/cracklib_password_check.cnf :

;plugin-load-add=cracklib_password_check.so

puis redémarrez le service mariadb:

systemctl restart mariadb.service
lav
la source
4

Vous pouvez configurer cela dans le fichier de configuration mysql open /etc/my.cnffile Dans ce fichier toutes les lignes qui configurent la politique de mot de passe font celles commentées comme

#validate-password=FORCE_PLUS_PERMANENT
#validate_password_length=10
#validate_password_mixed_case_count=1
#validate_password_number_count=1
#validate_password_policy=MEDIUM

Décommentez et modifiez la valeur des propriétés que vous souhaitez modifier.

Sharfi
la source
2

Si vous souhaitez faire des exceptions, vous pouvez appliquer le "hack" suivant. Il nécessite un utilisateur avec DELETEet INSERTprivilège pour la mysql.plugintable système.

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

Clause de non-responsabilité en matière de sécurité: réfléchissez aux raisons pour lesquelles vous raccourcissez ou simplifiez votre mot de passe et envisagez peut-être de le remplacer par un autre plus complexe. Cependant, je comprends les moments "il est 3 heures du matin et il faut juste travailler", assurez-vous simplement de ne pas créer un système de hacks, de peur que vous ne soyez vous-même piraté

SeanDowney
la source
2

Suite à la réponse de ktbos:

J'ai modifié le fichier mysqld.cnf et mysql n'a pas pu démarrer. Il s'est avéré que je modifiais le mauvais fichier!

Assurez-vous donc que le fichier que vous modifiez contient des balises de segment comme [mysqld_safe] et [mysqld]. Sous ce dernier, j'ai fait comme suggéré et ajouté la ligne:

validate_password_policy=LOW

Cela a parfaitement fonctionné pour résoudre mon problème de ne pas exiger de caractères spéciaux dans le mot de passe.

Paul Pritchard
la source
1

Désinstaller:

mysql> uninstall plugin validate_password;

Un plugin désinstallé n'est pas affiché par show plugins;

Installer:

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

Désactivé par configuration:

[mysqld]
validate_password = OFF

Un plugin peut être désactivé par configuration uniquement s'il est installé.

Antonio Bardazzi
la source
0

J'avais un problème sur Ubuntu 18.04 sur Mysql. Lorsque j'avais besoin de créer un nouvel utilisateur, la politique était toujours élevée.

La façon dont j'ai compris comment désactiver, pour les futurs collègues qui viennent enquêter, a été réglée à faible.

Connectez-vous au serveur mysql en tant que root

mysql -h localhost -u root -p

Définir le nouveau type de validation

SET GLOBAL validate_password_policy=0; //For Low

Redémarrez mysql

sudo service mysql restart
vic.py
la source
1
Vous devez écrire cette commande "SET ..." dans le shell mysql. Pas pour frapper la coquille.
kodmanyagha
0

Sur certaines installations, vous ne pouvez pas exécuter cette commande tant que vous n'avez pas réinitialisé le mot de passe root. Vous ne pouvez pas réinitialiser le mot de passe root tant que vous n’exécutez pas cette commande. Classique Catch-22.

Une solution non mentionnée par les autres répondeurs est de désactiver temporairement le plugin via la configuration mysql. Dans tout my.cnf, dans la [mysqld]section, ajoutez:

skip-validate_password=1

et redémarrez le serveur. Modifiez le mot de passe, redéfinissez la valeur sur 0, puis redémarrez.

Otheus
la source
cela ne fonctionne pas. Pouvez-vous mentionner à quelle version de mysql cela s'applique?
Dave Doga Oz
0

Pour les références et le futur, il faut lire la doc ici https://dev.mysql.com/doc/mysql-secure-deployment-guide/5.7/en/secure-deployment-password-validation.html

Ensuite, vous devez éditer votre mysqld.cnffichier, par exemple:

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

Ensuite, ajoutez dans la partie [mysqld], ce qui suit:

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

Fondamentalement, si vous modifiez votre valeur par défaut, cela ressemblera à:

[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

Ensuite, vous pouvez redémarrer:

systemctl restart mysql

Si vous oubliez la plugin-load-add=validate_password.sopièce, vous ferez une erreur au redémarrage.

Prendre plaisir !

gabriel
la source
-1

Pour mysql 8.0.7, allez dans votre répertoire mysql, puis utilisez:

sudo bin/mysql_secure_installation

pour configurer l'option de mot de passe.

J Tang
la source
-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;

pas besoin d'arrêter / démarrer mysql

Pravin
la source