Ihr Passwort entspricht nicht den aktuellen Richtlinienanforderungen

148

Ich möchte einen neuen Benutzer in MySQL mit der folgenden Syntax erstellen:

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

Es wird jedoch ein Fehler zurückgegeben:

Ihr Passwort entspricht nicht den aktuellen Richtlinienanforderungen.

Ich habe viele Passwörter ausprobiert, aber sie funktionieren nicht. Wie kann ich das beheben?

Nguyen
quelle
1
Stellen Sie die Kennwortrichtlinienebene niedriger ein. Schauen Sie hier: dev.mysql.com/doc/refman/5.6/en/…
Fjarlaegur
4
Wie ist Ihre Passwortrichtlinie eingerichtet? Sie können die Variablen, die für Ihr Passwortüberprüfungsmodul eingerichtet wurden, mitSHOW VARIABLES LIKE 'validate_password%'
JNevill
Vielen Dank! Ich habe die Kennwortrichtlinienebene niedriger eingestellt und es funktioniert.
Nguyen
1
Ich habe mein Problem mitUNINSTALL COMPONENT 'file://component_validate_password';
princebillyGK

Antworten:

244

Wegen deines Passwortes. Sie können die Kennzahlen zur Kennwortüberprüfung mithilfe der folgenden Abfrage im MySQL-Client anzeigen:

SHOW VARIABLES LIKE 'validate_password%';

Die Ausgabe sollte ungefähr so ​​sein:

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

Dann können Sie die Kennwortrichtlinienebene niedriger einstellen, zum Beispiel:

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

Überprüfen Sie die MySQL-Dokumentation .

Hung Nguyen
quelle
31
Um Himmels willen sollten Sie die offizielle MySQL-Dokumentation zitieren , kein YouTube-Video.
Marquis von Lorne
26
Verwenden Sie den folgenden Befehl, um 'Passwort' als Passwort für die Entwicklungsmaschine zu verwenden:SET GLOBAL validate_password_policy = 0;
Mahmudul Hasan Shohag
4
SET GLOBAL validate_password.length = 6; SET GLOBAL validate_password.number_count = 0; Aktualisiert!!
BeatingBytes
6
es ist nur eherSET GLOBAL validate_password.policy = 0;
iamtodor
1
Dies war hilfreich, da es mir tatsächlich zeigte, warum mein 30 Zeichen langes Passwort "schwach" war (kein Sonderzeichen). Ich konnte die Sonderzeichenanforderung entfernen und die Mindestlänge von 8 auf 20
erhöhen
68

HINWEIS: Dies ist möglicherweise keine sichere Lösung. Wenn Sie jedoch an einer Testumgebung arbeiten, benötigen Sie nur eine schnelle Lösung und kümmern sich nicht einmal um die Sicherheitseinstellungen. Dies ist eine schnelle Lösung.

Das gleiche Problem trat mir auf, als ich "mysql_secure_installation" ausführte und die Kennwortsicherheitsstufe auf "mittel" änderte.

Ich habe den Fehler umgangen, indem ich Folgendes ausgeführt habe:

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

Stellen Sie sicher, dass Sie das Plugin "validate_password" bei Bedarf neu installieren.

kennyut
quelle
3
Schreckliche Lösung. Sie sollten den Pegel auf das für Sie passende Niveau senken und nicht die gesamte Einrichtung entfernen.
Marquis von Lorne
10
danke fürs Schreiben. schnelle und schmutzige Lösung. Genau wie @kennyut sagt: Stellen Sie sicher, dass Sie das Plugin "validate_password"
Meng Zhao
52

Wenn es Ihnen egal ist, wie die Passwortrichtlinie lautet. Sie können es auf LOW setzen, indem Sie den folgenden Befehl mysql eingeben:

mysql> SET GLOBAL validate_password_policy=LOW;
singh
quelle
8
sollte SET GLOBAL validate_password.policy=LOW;stattdessen sein
songyy
22

Für MySQL 8 *

SET GLOBAL validate_password.policy=LOW

Referenzlink zur Erläuterung der Richtlinien - Klicken Sie hier

Philip
quelle
20

Nach dem Ausführen des Befehls sudo mysql_secure_installation.

  1. Führen Sie aus sudo mysql, um die MySQL-Eingabeaufforderung aufzurufen.
  2. Führen Sie dies aus SELECT user,authentication_string,plugin,host FROM mysql.user;, um zu überprüfen, ob der Benutzer root als Plugin auth_socket vorhanden ist .
  3. Führen Sie dann aus uninstall plugin validate_password;, um Berechtigungen zu löschen, bevor Sie dies ausführen. ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';Ändern Sie das Kennwort in ein sicheres Kennwort.

HINWEIS: Weitere Hilfe finden Sie unter diesem Link https://www.digitalocean.com/community/tutorials/how-to-install-mysql-on-ubuntu-18-04

Leo Sammy
quelle
11

Sie müssen die MySQL-Kennwortrichtlinie in LOW ändern.

Login als root

mysql -u root -p

Richtlinien ändern

SET GLOBAL validate_password_policy=LOW;

oder

SET GLOBAL validate_password_policy=0;

Ausfahrt

exit

Starten Sie den MySQL-Dienst neu

sudo service mysqld restart

Sie müssen die MySQL-Kennwortrichtlinie in Niedrig = 0 / Mittel = 1 / Hoch = 2 ändern.

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

Für MySql 8 können Sie folgendes Skript verwenden:

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

Meiner Meinung nach setzen Sie "validate_password_policy" auf "low" ist es nicht richtig, oder das "validate password plugin" zu deinstallieren. Sie dürfen niemals Kompromisse bei der Sicherheit Ihrer Datenbank eingehen (es sei denn, Sie kümmern sich nicht wirklich darum). Ich frage mich, warum die Leute diese Optionen überhaupt vorschlagen, wenn Sie einfach ein gutes Passwort auswählen können.

Um dieses Problem zu beheben, habe ich den folgenden Befehl in mysql ausgeführt: SHOW VARIABLES LIKE 'validate_password%', wie von @JNevill vorgeschlagen. Meine "validate_password_policy" wurde zusammen mit anderen Dingen auf "Mittel" gesetzt. Hier ist der Screenshot seiner Ausführung: Validate Password Policy

Das Ergebnis ist selbsterklärend. Für ein gültiges Kennwort (wenn die Kennwortrichtlinie auf mittel eingestellt ist):

  • Das Passwort muss mindestens 8 Zeichen lang sein
  • Die Anzahl der gemischten Fälle beträgt 1 (mindestens 1 Buchstabe in Kleinbuchstaben und 1 Buchstabe in Großbuchstaben)
  • Die Anzahl ist 1
  • Die minimale Anzahl von Sonderzeichen beträgt 1

Ein gültiges Passwort muss also der Richtlinie entsprechen. Beispiele für ein gültiges Passwort für die oben genannten Regeln sind möglicherweise:

  • Student123 @
  • NINZAcoder $ 100
  • demoPass # 00

Sie können eine beliebige Kombination auswählen, solange sie der Richtlinie entspricht.

Für andere "validate_password_policy" können Sie einfach die Werte für verschiedene Optionen suchen und Ihr Passwort entsprechend auswählen (ich habe es nicht für "STRONG" versucht ).

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

Harish Kumar Saini
quelle
2
Es ist STARK für die Top-Passwort-Richtlinie.
Steam Gamer
Ich verstehe auch , die Menschen nicht zu degradieren was darauf hindeutet , validate_password_policyzu LOW. Benutzer können perfekt ein sicheres Passwort erstellen oder generieren, das die Anforderung erfüllt. Wenn Sie sich nicht sicher sind, wie es geht, verwenden Sie dafür ein Tool. Zum Beispiel github.com/joseluisq/rpasswd
joseluisq
3

Schritt 1: Überprüfen Sie Ihr Standard-Authentifizierungs-Plugin

SHOW VARIABLES LIKE 'default_authentication_plugin';

Schritt 2: Erfüllen Sie Ihre Anforderungen an die Passwortüberprüfung

SHOW VARIABLES LIKE 'validate_password%';

Schritt 3: Richten Sie Ihren Benutzer mit den richtigen Kennwortanforderungen ein

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

Ich hatte das gleiche Problem und die Antwort liegt direkt vor Ihnen. Denken Sie daran, wann Sie das Skript ausgeführt haben, während Sie MySQL wie installiert haben

sudo mysql_secure_installation

Dort haben Sie irgendwo ausgewählt, welchen Kennworttyp Sie auswählen möchten

Es gibt drei Ebenen der Kennwortüberprüfungsrichtlinie:

LOW Length> = 8 MEDIUM Length> = 8, numerisch, Groß- und Kleinschreibung und Sonderzeichen STRONG Length> = 8, numerisch, Mixed Case, Sonderzeichen und Wörterbuchdatei

Bitte geben Sie 0 = NIEDRIG, 1 = MITTEL und 2 = STARK ein:

Sie müssen derselben Richtlinie ein Kennwort geben

Hier einige Beispielbeispiele für Ihre Passwörter:
für Typ 0: abcdabcd
für Typ 1: abcd1234
für Typ 2:ancd@1234

Anurag Sahu
quelle
2

Fügen Sie für Laravel-Benutzer mit diesem Problem mit MySQL 8.0.x hinzu

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

zu Ihrer database.php-Datei wie folgt:

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

Es hat es für mich behoben.

Jekayode
quelle
2

Das Problem ist, dass Ihr Kennwort nicht mit den Kennwortüberprüfungsregeln übereinstimmt. Sie können die folgenden Schritte einfach ausführen, um Ihr Problem zu lösen.

Sie können einfach die Konfigurationsmatrix für die Kennwortüberprüfung anzeigen, indem Sie den folgenden Code eingeben.

mysql-> SHOW VARIABLES LIKE 'validate_password%';

Dann finden Sie in Ihrer Matrix unten Variablen mit entsprechenden Werten und dort müssen Sie überprüfen validate_password_length, validate_password_number_countund validate_password_policy.

Überprüfen Sie die für diese Variablen verwendeten Werte. Stellen Sie sicher, dass Ihr validate_password_lengthWert nicht größer als 6 sein sollte. Sie können diesen Wert mit dem folgenden Code auf 6 setzen.

SET GLOBAL validate_password_length = 6;

Und danach müssen Sie validate_password_number_countauf 0 setzen. Verwenden Sie dazu den folgenden Code.

SET GLOBAL validate_password_number_count = 0;

Schließlich müssen Sie Sie setzen validate_password_policyauf low. Wenn Sie dies haben Mediumoder HighIhre weniger sicheren Passwörter nicht zulassen. Stellen Sie dies auf lowden folgenden Code ein.

SET GLOBAL validate_password_policy=LOW;
Duschan
quelle
1

Legen Sie ein Kennwort fest, das 7 MySql-Validierungsregeln entspricht

z.B:- d_VX>N("xn_BrD2y

Wenn Sie die Validierungskriterien etwas einfacher gestalten, wird das Problem behoben

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

Es wird jedoch empfohlen, ein sicheres Passwort zu verwenden, um die richtige Lösung zu finden

mujuonly
quelle
0

Diese Fehlermeldung hat nichts mit dem in Ihrer Tabelle gespeicherten Passwort zu tun. Es tritt auch auf, wenn Sie eingeben (auf der SQL-Konsole)

"Passwort auswählen ('123456789')"

oder wenn

"Passwort auswählen ('A123456789')"

oder wenn

"Passwort auswählen ('A! 123456789')"

Wenn Sie tippen

"Passwort auswählen ('A! a123456789')"

dann wird es funktionieren. Verwenden Sie einfach große + kleine Buchstaben, Sonderzeichen und Zahlen, um Ihr Passwort zu erstellen.

Sie können diese Überprüfungen in my.cnf deaktivieren, aber dann besteht ein Sicherheitsrisiko!

in [mysqld] hinzufügen:

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

funktionierte bei mir bei der Ubuntu-Neuinstallation von mysqld nicht, musste folgendes hinzufügen: zu /etc/mysql/mysql.conf.d/mysqld.cnf oder der Server würde nicht starten (schätze, das Plugin wurde nicht auf dem Computer geladen zum richtigen Zeitpunkt, als ich es einfach ohne die Plugin-Load-Add-Direktive hinzugefügt habe)

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

Es gibt einige Momente, in denen es großartig ist, eine schnelle Lösung zu finden. Wenn Sie jedoch vermeiden können, die Kennwortbeschränkungen zu verringern, können Sie in Zukunft keine großen Kopfschmerzen mehr haben.

Der nächste Link stammt aus der offiziellen Dokumentation https://dev.mysql.com/doc/refman/5.6/en/validate-password.html , in der ein Beispiel genau wie Ihr Beispiel veröffentlicht und gelöst wird.

Das einzige Problem, das Sie haben, ist, dass Ihr Passwort nicht stark genug ist, um die tatsächliche Mindestrichtlinie zu erfüllen (nicht zum Entfernen empfohlen). Sie können also verschiedene Passwörter ausprobieren, wie Sie im Beispiel sehen können.

Christian
quelle
0

SHAR VARIABLES LIKE 'validate_password%';

Geben Sie hier die Bildbeschreibung ein

mysql> SET GLOBAL validate_password.length = 6;

mysql> SET GLOBAL validate_password.number_count = 0;

mysql> SET GLOBAL validate_password.policy = LOW;

SHAR VARIABLES LIKE 'validate_password%';

Geben Sie hier die Bildbeschreibung ein

hizlan erpak
quelle
-1
mysql> SET GLOBAL validate_password.policy = 0;
CollinsKe
quelle
1
Während dieser Code das Problem des OP lösen kann, ist es am besten, eine Erklärung beizufügen, wie Ihr Code das Problem des OP behebt. Auf diese Weise können zukünftige Besucher aus Ihrem Beitrag lernen und ihn auf ihren eigenen Code anwenden. SO ist kein Codierungsdienst, sondern eine Ressource für Wissen. Es ist auch wahrscheinlicher, dass qualitativ hochwertige, vollständige Antworten positiv bewertet werden. Diese Funktionen sowie die Anforderung, dass alle Beiträge in sich geschlossen sind, sind einige der Stärken von SO als Plattform, die es von Foren unterscheidet. Sie können bearbeiten, um zusätzliche Informationen hinzuzufügen und / oder Ihre Erklärungen durch Quelldokumentation zu ergänzen.
SherylHohman