Twoje hasło nie spełnia obecnych wymagań zasad


148

Chcę utworzyć nowego użytkownika w mysql ze składnią:

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

Ale zwraca błąd:

Twoje hasło nie spełnia obecnych wymagań zasad.

Próbowałem wielu haseł, ale nie działają. Jak mogę to naprawić?


1
Ustaw niższy poziom zasad haseł. Spójrz tutaj: dev.mysql.com/doc/refman/5.6/en/…
Fjarlaegur

4
Jaka jest Twoja polityka haseł? Możesz sprawdzić zmienne, które zostały ustawione dla twojego modułu sprawdzania poprawności hasła, używającSHOW VARIABLES LIKE 'validate_password%'
JNevill

Dzięki! Ustawiłem niższy poziom polityki haseł i działa.
Nguyen

1
Rozwiązałem swój problem za pomocąUNINSTALL COMPONENT 'file://component_validate_password';
princebillyGK

Odpowiedzi:


244

Z powodu twojego hasła. Możesz zobaczyć metryki konfiguracji sprawdzania poprawności hasła za pomocą następującego zapytania w kliencie MySQL:

SHOW VARIABLES LIKE 'validate_password%';

Wynik powinien wyglądać mniej więcej tak:

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

następnie możesz ustawić niższy poziom polityki haseł, na przykład:

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

sprawdź dokumentację MySQL .


31
Powinieneś cytować oficjalną dokumentację MySQL , a nie film z YouTube, na miłość boską.
Markiz Lorne

26
Użyj następującego polecenia, aby użyć SET GLOBAL validate_password_policy = 0;
``

4
SET GLOBAL validate_password.length = 6; SET GLOBAL validate_password.number_count = 0; AKTUALIZACJA !!
BeatingBytes

6
to po prostu raczejSET GLOBAL validate_password.policy = 0;
iamtodor

1
Było to pomocne, ponieważ faktycznie pokazało mi, dlaczego moje 30-znakowe hasło było „słabe” (bez znaku specjalnego). Udało mi się usunąć wymóg znaków specjalnych i zwiększyć minimalną długość z 8 do 20.
andrewtweber

68

UWAGA: To może nie być bezpieczne rozwiązanie. Ale jeśli pracujesz w środowisku testowym, potrzebujesz tylko szybkiej poprawki i nie przejmujesz się nawet ustawieniami zabezpieczeń. To szybkie rozwiązanie.

Ten sam problem przytrafił mi się, gdy uruchomiłem „mysql_secure_installation” i zmieniłem poziom bezpieczeństwa hasła na „średni”.

Pominąłem błąd, wykonując następujące czynności:

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

upewnij się, że w razie potrzeby ponownie zainstalowałeś wtyczkę „validate_password”.


3
Straszne rozwiązanie. Powinieneś obniżyć poziom do tego, który Ci odpowiada, a nie usuwać całego obiektu.
Markiz Lorne

10
dzięki za wysłanie. szybka i brudna naprawa. tak jak mówi @kennyut: upewnij się, że ponownie zainstalowałeś wtyczkę „validate_password”
Meng Zhao,

52

Jeśli nie obchodzi Cię, jakie są zasady dotyczące haseł. Możesz ustawić go na LOW, wydając poniższe polecenie mysql:

mysql> SET GLOBAL validate_password_policy=LOW;

8
powinno być SET GLOBAL validate_password.policy=LOW;zamiast tego
songyy


20

Po uruchomieniu polecenia sudo mysql_secure_installation.

  1. Uruchom, sudo mysqlaby wejść do znaku zachęty mysql.
  2. Uruchom to, SELECT user,authentication_string,plugin,host FROM mysql.user;aby sprawdzić, czy użytkownik root ma jako wtyczkę auth_socket .
  3. Następnie uruchom, uninstall plugin validate_password;aby usunąć uprawnienia przed uruchomieniem tego ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';Pamiętaj, aby zmienić hasło na silne hasło.

UWAGA: sprawdź ten link https://www.digitalocean.com/community/tutorials/how-to-install-mysql-on-ubuntu-18-04, aby uzyskać dodatkową pomoc


11

Musisz zmienić politykę haseł MySQL na LOW.

zaloguj się jako root

mysql -u root -p

zmienić politykę

SET GLOBAL validate_password_policy=LOW;

lub

SET GLOBAL validate_password_policy=0;

wyjście

exit

zrestartuj usługę MySQL

sudo service mysqld restart

Musisz zmienić politykę haseł MySQL na Niska = 0 / Średnia = 1 / Wysoka = 2.

SET GLOBAL validate_password_policy=0;
SET GLOBAL validate_password_policy=1;    
SET GLOBAL validate_password_policy=2;

8

W przypadku MySql 8 możesz użyć następującego skryptu:

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;

7

Moim zdaniem ustawienie „validate_password_policy” na „low” lub odinstalowanie „validate password plugin” nie jest właściwe. Nigdy nie możesz rezygnować z bezpieczeństwa swojej bazy danych (chyba, że ​​naprawdę cię to nie obchodzi). Zastanawiam się, dlaczego ludzie w ogóle sugerują te opcje, skoro wystarczy wybrać dobre hasło.

Aby rozwiązać ten problem, wykonałem następujące polecenie w mysql: POKAŻ ZMIENNE LIKE 'validate_password%' zgodnie z sugestią @JNevill. Moje „validate_password_policy” zostało ustawione na Medium, razem z innymi rzeczami. Oto zrzut ekranu z jego wykonania: Sprawdź poprawność polityki haseł

Wynik jest oczywisty. Dla prawidłowego hasła (gdy polityka haseł jest ustawiona na średni):

  • Hasło musi mieć co najmniej 8 znaków
  • Liczba znaków mieszanych to 1 (co najmniej 1 mała litera i 1 wielka litera)
  • Liczba to 1
  • Minimalna liczba znaków specjalnych to 1

Dlatego prawidłowe hasło musi być zgodne z zasadami. Przykładami poprawnych haseł do powyższych zasad mogą być:

  • Student123 @
  • NINZAcoder 100 USD
  • DemoPass # 00

Możesz wybrać dowolną kombinację, o ile jest ona zgodna z zasadami.

W przypadku innych „validate_password_policy” możesz po prostu poszukać wartości dla różnych opcji i odpowiednio dobrać hasło (nie próbowałem użyć „STRONG” ).

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


2
Jest MOCNA dla najlepszych zasad dotyczących haseł.
Gracz Steam

Nie rozumiem też osób sugerujących przejście validate_password_policyna LOW. Użytkownicy mogą doskonale stworzyć lub wygenerować silne hasło spełniające wymagania. Jeśli nie jesteś pewien, jak to zrobić, użyj odpowiedniego narzędzia. Na przykład github.com/joseluisq/rpasswd
joseluisq

3

Krok 1: Sprawdź domyślną wtyczkę uwierzytelniającą

SHOW VARIABLES LIKE 'default_authentication_plugin';

Krok 2: weryfikacja wymagań dotyczących weryfikacji hasła

SHOW VARIABLES LIKE 'validate_password%';

Krok 3: Skonfiguruj użytkownika z poprawnymi wymaganiami dotyczącymi hasła

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

3

Miałem ten sam problem, a odpowiedź jest tuż przed tobą, pamiętaj, kiedy uruchomiłeś skrypt podczas instalacji mysql jak

sudo mysql_secure_installation

tam gdzieś wybrałeś jaki typ hasła chciałbyś wybrać

Istnieją trzy poziomy zasad sprawdzania poprawności haseł:

LOW Length> = 8 MEDIUM Length> = 8, numeryczne, mieszane wielkości liter i znaki specjalne STRONG Długość> = 8, numeryczne, mieszane wielkości liter, znaki specjalne i plik słownika

Wpisz 0 = NISKI, 1 = ŚREDNI i 2 = MOCNY:

musisz podać hasło do tej samej polityki

oto kilka przykładowych przykładów haseł:
dla typu 0: abcdabcd
dla typu 1: abcd1234
dla typu 2:ancd@1234


2

Dla użytkowników Laravel, którzy mają ten problem z MySQL 8.0.x, dodaj

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

do pliku database.php, jak poniżej:

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

Naprawiło to dla mnie.


2

Problem polega na tym, że Twoje hasło nie będzie zgodne z regułami sprawdzania poprawności hasła. Możesz wykonać poniższe czynności, aby rozwiązać problem.

Możesz po prostu zobaczyć macierz konfiguracji sprawdzania poprawności hasła, wpisując poniższy kod.

mysql-> SHOW VARIABLES LIKE 'validate_password%';

Następnie w macierzy można znaleźć poniżej zmiennych z odpowiadającymi im wartościami i tam masz do wyboru validate_password_length, validate_password_number_counti validate_password_policy.

Sprawdź wartości użyte dla tych zmiennych. Upewnij się, że validate_password_lengthnie powinno być większe niż 6. Możesz ustawić to na 6, używając poniższego kodu.

SET GLOBAL validate_password_length = 6;

A potem musisz ustawić validate_password_number_countna 0. Zrób to używając poniższego kodu.

SET GLOBAL validate_password_number_count = 0;

Wreszcie trzeba ustawić się validate_password_policydo low. Posiadanie tego jako Mediumlub Highnie zezwala na mniej bezpieczne hasła. Ustaw to lowwedług poniższego kodu.

SET GLOBAL validate_password_policy=LOW;

1

Ustaw hasło, które spełnia 7 reguł walidacji MySql

na przykład:- d_VX>N("xn_BrD2y

Uproszczenie nieco kryteriów walidacji rozwiąże problem

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

Ale zalecane Silne hasło jest poprawnym rozwiązaniem


0

Ten komunikat o błędzie nie ma nic wspólnego z hasłem przechowywanym w Twojej tabeli. Występuje również, jeśli wpiszesz (w konsoli SQL)

„wybierz hasło ('123456789')”

albo jeśli

„wybierz hasło ('A123456789')”

albo jeśli

„wybierz hasło ('A! 123456789')”

Jeśli wpiszesz

„wybierz hasło ('A! a123456789')”

wtedy to zadziała. Po prostu użyj dużych + małych liter, specjalnych znaków i cyfr, aby utworzyć hasło.

Możesz wyłączyć te kontrole w my.cnf, ale wtedy będziesz mieć zagrożenie bezpieczeństwa!

w [mysqld] dodaj:

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

0

nie działało dla mnie na nowej instalacji mysqld w Ubuntu, musiałem dodać to: do /etc/mysql/mysql.conf.d/mysqld.cnf lub serwer nie mógł się uruchomić (zgadnij, że wtyczka nie załadowała się na we właściwym czasie, kiedy po prostu dodałem go bez dyrektywy 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

0

Są chwile, w których znalezienie szybkiego rozwiązania jest świetne. Ale jeśli możesz uniknąć niskich ograniczeń dotyczących haseł, może to uchronić Cię przed dużym bólem głowy w przyszłości.

Następny link pochodzi z oficjalnej dokumentacji https://dev.mysql.com/doc/refman/5.6/en/validate-password.html , gdzie ujawniają przykład dokładnie taki jak twój i rozwiązują go.

Jedynym problemem, jaki masz, jest to, że twoje hasło nie jest wystarczająco silne, aby spełnić rzeczywistą minimalną politykę (nie zaleca się usuwania). Możesz więc wypróbować różne hasła, jak widać w przykładzie.


0

POKAŻ ZMIENNE TAKIE JAK 'validate_password%';

wprowadź opis obrazu tutaj

mysql> SET GLOBAL validate_password.length = 6;

mysql> SET GLOBAL validate_password.number_count = 0;

mysql> SET GLOBAL validate_password.policy = LOW;

POKAŻ ZMIENNE TAKIE JAK 'validate_password%';

wprowadź opis obrazu tutaj


-1
mysql> SET GLOBAL validate_password.policy = 0;

1
Chociaż ten kod może rozwiązać problem PO, najlepiej jest dołączyć wyjaśnienie, w jaki sposób Twój kod rozwiązuje problem PO. W ten sposób przyszli odwiedzający mogą uczyć się z Twojego postu i zastosować go do własnego kodu. SO nie jest usługą programistyczną, ale źródłem wiedzy. Również wysokiej jakości, kompletne odpowiedzi mają większe szanse na głosowanie. Te funkcje, wraz z wymogiem, aby wszystkie posty były samodzielne, są jednymi z mocnych stron SO jako platformy, która odróżnia ją od forów. Możesz edytować, aby dodać dodatkowe informacje i / lub uzupełnić wyjaśnienia o dokumentację źródłową.
SherylHohman
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.