Jak wyłączyć sprawdzanie poprawności hasła mysql?

153

Wygląda na to, że mogłem nieumyślnie załadować wtyczkę do sprawdzania hasła w MySQL 5.7. Wydaje się, że ta wtyczka wymusza zgodność wszystkich haseł z określonymi regułami.

Chciałbym to wyłączyć.

Próbowałem zmienić zmienną validate_password_length zgodnie z sugestią tutaj, ale bezskutecznie.

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

Chciałbym albo wyładować wtyczkę, albo jakoś ją wykastrować.

Alex Ryan
źródło
9
Czy próbowałeś zmienić ustawienie zasad? SET GLOBAL validate_password_policy=LOW;
Rikki
1
SET GLOBAL validate_password.policy=LOW;
belgacea

Odpowiedzi:

430

Oto, co robię, aby usunąć wtyczkę walidacji hasła:

  1. Zaloguj się do serwera mysql jako root mysql -h localhost -u root -p
  2. Uruchom następującą komendę sql: uninstall plugin validate_password;
  3. Jeśli ostatnia linia nie działa (nowa wersja mysql), powinieneś wykonać UNINSTALL COMPONENT 'file://component_validate_password';

Nie polecałbym tego rozwiązania dla systemu produkcyjnego. Użyłem tego rozwiązania na lokalnej instancji mysql tylko do celów programistycznych.

Ray Hunter
źródło
18
aby ponownie go włączyć, użyj następującego polecenia: INSTALL PLUGIN validate_password SONAME 'validate_password.so';
vchrizz
8
Aby usunąć wtyczkę, musisz przynajmniej raz ustawić bezpieczne hasło za pośrednictwem, grep 'password' /var/log/mysqld.log | tail -1a następnie /usr/bin/mysql_secure_installation. Po wykonaniu tej czynności możesz uruchomić polecenia z srayhunter powyżej, a następnie uruchomić, mysqladmin -u root -p'oldpassword' password newpassaby użyć dowolnego hasła, które chcesz.
specialk1st
2
Wtyczka jest wywoływana cracklib_password_checkw bieżącej bazie danych MariaDB.
czerny 07.07.17
27
Uwaga: W MySQL 8.0.4 wtyczka validate_password została ponownie zaimplementowana jako komponent validate_password. Zamiast zapytania nr 2 powyżej, uruchom:UNINSTALL COMPONENT 'file://component_validate_password';
Aaron Cicali
4
mysql> SET GLOBAL validate_password_policy = 0;
JREAM
41

Używam MySQL w wersji 8.0.12, a polecenie wyłączenia komponentu sprawdzania poprawności hasła to:

UNINSTALL COMPONENT 'file://component_validate_password';

Aby zainstalować go ponownie, polecenie brzmi:

INSTALL COMPONENT 'file://component_validate_password';

Jeśli chcesz tylko zmienić politykę wtyczki do sprawdzania poprawności hasła:

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
źródło
34

Opierając się na odpowiedzi od Sharfi, edytuj plik /etc/my.cnf i dodaj tylko tę jedną linię:

validate_password_policy=LOW

Powinno to w wystarczającym stopniu zneutralizować walidację zgodnie z wnioskiem PO. Po tej zmianie prawdopodobnie zechcesz zrestartować mysqld. W zależności od systemu operacyjnego wyglądałoby to mniej więcej tak:

sudo service mysqld restart

validate_password_policy przyjmuje wartości 0, 1 lub 2 lub słowa LOW, MEDIUM i STRONG, które odpowiadają tym liczbom. Wartością domyślną jest ŚREDNIE (1), które wymaga haseł zawierających co najmniej jedną wielką literę, jedną małą literę, jedną cyfrę i jeden znak specjalny, a całkowita długość hasła to co najmniej 8 znaków. Zmiana na LOW, jak sugeruję tutaj, sprawdzi tylko długość, która, jeśli nie została zmieniona przez inne parametry, sprawdzi długość 8. Jeśli chcesz również skrócić ten limit długości, możesz również dodać validate_password_length w do plik my.cnf.

Aby uzyskać więcej informacji o poziomach i szczegółach, zobacz dokumentację mysql .


W przypadku MySQL 8 właściwość została zmieniona z „validate_password_policy” na „validate_password.policy”. Najnowsze informacje można znaleźć w zaktualizowanym dokumencie mysql .

ktbos
źródło
6
Jeśli potrzebujesz tylko tymczasowej zmiany, aby umożliwić ustawienie jednego hasła, możesz użyćSET GLOBAL validate_password_policy=LOW;
Rikki
1
To lepsze rozwiązanie niż usunięcie samego modułu.
Mrugesh Mistry
2
mysql: nieznana zmienna 'validate_password_policy = LOW'
Amalgovinus
2
Wygląda na to, że nazwa zmiennej uległa zmianie w najnowszym MySQL. @Amalgovinus, spróbuj zamiast tego użyć nazwy zmiennej „validate_password.policy” i sprawdź, czy to działa. A jeśli tak, zaktualizuję odpowiedź.
ktbos
6

Aby wyłączyć sprawdzanie hasła w mariadb-10.1.24 (Fedora 24), musiałem zakomentować linię w pliku /etc/my.cnf.d/cracklib_password_check.cnf :

;plugin-load-add=cracklib_password_check.so

następnie zrestartuj usługę mariadb:

systemctl restart mariadb.service
lav
źródło
4

Możesz to skonfigurowaćw pliku konfiguracyjnym mysql otwórz /etc/my.cnfplik W tym pliku wszystkie linie konfigurujące politykę haseł sprawiają, że komentowane są jak

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

Odkomentuj i zmień wartość właściwości, które chcesz zmienić.

Sharfi
źródło
2

Jeśli chcesz zrobić wyjątki, możesz zastosować poniższy „hack”. Wymaga to użytkownikowi DELETEi INSERTprzywilej dla mysql.plugintabeli systemowej.

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

Niewyraźne zastrzeżenie dotyczące bezpieczeństwa: zastanów się, dlaczego skracasz lub upraszczasz hasło, i być może rozważ zastąpienie go bardziej złożonym. Rozumiem jednak momenty „jest 3 nad ranem i po prostu trzeba pracować”, po prostu upewnij się, że nie tworzysz systemu hacków, aby nie zostać zhakowanym

SeanDowney
źródło
2

W nawiązaniu do odpowiedzi od ktbos:

Zmodyfikowałem plik mysqld.cnf i nie udało się uruchomić mysql. Okazało się, że modyfikowałem zły plik!

Dlatego upewnij się, że modyfikowany plik zawiera tagi segmentów, takie jak [mysqld_safe] i [mysqld]. Pod tym ostatnim zrobiłem zgodnie z sugestią i dodałem wiersz:

validate_password_policy=LOW

To działało idealnie, aby rozwiązać mój problem z niewymaganiem znaków specjalnych w haśle.

Paul Pritchard
źródło
1

Odinstaluj:

mysql> uninstall plugin validate_password;

Odinstalowana wtyczka nie jest wyświetlana przez show plugins;

Zainstalować:

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

Wyłączone przez konfigurację:

[mysqld]
validate_password = OFF

Wtyczkę można wyłączyć przez konfigurację tylko wtedy, gdy jest zainstalowana.

Antonio Bardazzi
źródło
0

Miałem problem z Ubuntu 18.04 na MySQL. Kiedy potrzebowałem utworzyć nowego użytkownika, polityka była zawsze wysoka.

Sposób, w jaki wymyśliłem, jak wyłączyć, dla przyszłych kolegów, którzy przyjdą zbadać, był ustawiony na niski.

Zaloguj się do serwera mysql jako root

mysql -h localhost -u root -p

Ustaw nowy typ walidacji

SET GLOBAL validate_password_policy=0; //For Low

Uruchom ponownie mysql

sudo service mysql restart
vic.py
źródło
1
Musisz napisać to polecenie "SET ..." do powłoki mysql. Nie walić w skorupę.
kodmanyagha
0

W niektórych instalacjach nie możesz wykonać tego polecenia, dopóki nie zresetujesz hasła roota. Nie możesz zresetować hasła roota, dopóki nie wykonasz tego polecenia. Klasyczny Catch-22.

Jednym z rozwiązań, o których inni respondenci nie wspominają, jest tymczasowe wyłączenie wtyczki poprzez konfigurację mysql. W dowolny my.cnf, w [mysqld]sekcji, należy dodać:

skip-validate_password=1

i zrestartuj serwer. Zmień hasło, ustaw wartość z powrotem na 0 i uruchom ponownie.

Otheus
źródło
to nie działa. Czy możesz wspomnieć, której wersji mysql to dotyczy?
Dave Doga Oz
0

Aby uzyskać odniesienia i przyszłość, należy przeczytać dokument tutaj https://dev.mysql.com/doc/mysql-secure-deployment-guide/5.7/en/secure-deployment-password-validation.html

Następnie powinieneś edytować swój mysqld.cnfplik, na przykład:

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

Następnie dodaj w części [mysqld], co następuje:

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

Zasadniczo, jeśli zmienisz ustawienia domyślne, będzie to wyglądać następująco:

[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

Następnie możesz ponownie uruchomić:

systemctl restart mysql

Jeśli zapomnisz plugin-load-add=validate_password.soczęści, wystąpi błąd podczas ponownego uruchamiania.

Cieszyć się !

gabrielstuff
źródło
-1

W przypadku mysql 8.0.7 przejdź do katalogu mysql, a następnie użyj:

sudo bin/mysql_secure_installation

aby skonfigurować opcję hasła.

J Tang
źródło
-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;

nie ma potrzeby zatrzymywania / uruchamiania mysql

Pravin
źródło