it-swarm.dev

Jaki jest powód, dla którego host „Host_name” jest zablokowany w MySQL?

Kiedy używam niepoprawnego hasła do łączenia się z serwerem mysql, a liczba testów przekracza max_connect_errors i znajduję Aborted_connects pojawia się również podczas testowania liczby, ale host nadal nie jest zablokowany.

Podobnie jak Aborted_connects nad max_connect_errors następnie nazwa_hosta jest zablokowana?

12
user3157

W tym momencie może być konieczne uruchomienie FLUSH HOSTS i sprawdzenie, czy to odblokuje.

Dokumentacja MySQL mówi o hostach FLUSH:

  • Opróżnia tabele pamięci podręcznej hosta. Powinieneś opróżnić tabele hostów, jeśli niektóre hosty zmienią adres IP lub jeśli pojawi się komunikat o błędzie Host „nazwa_hosta” jest zablokowany. Gdy więcej niż więcej błędów max_connect_errors wystąpi kolejno dla danego hosta podczas łączenia się z serwerem MySQL, MySQL zakłada, że ​​coś jest nie tak i blokuje hostowi dalsze żądania połączenia. Opróżnianie tabel hosta umożliwia dalsze próby połączenia z hosta. Patrz sekcja C.5.2.6, „Host„ nazwa_hosta ”jest zablokowana”. Możesz uruchomić mysqld z --max_connect_errors = 999999999, aby uniknąć tego komunikatu o błędzie.

Dlaczego Host miałby zostać zablokowany na początku?

Zgodnie z dokumentacją MySQL :

Jeśli pojawi się następujący błąd, oznacza to, że mysqld otrzymał wiele żądań połączenia od hosta „nazwa_hosta”, które zostały przerwane w środku: host „nazwa_hosta” jest zablokowany z powodu wielu błędów połączenia. Odblokuj za pomocą „mysqladmin flush-hosts” Dopuszczalna liczba przerwanych żądań połączenia zależy od wartości zmiennej systemowej max_connect_errors. Po nieudanych żądaniach max_connect_errors mysqld zakłada, że ​​coś jest nie tak (na przykład, że ktoś próbuje się włamać) i blokuje hosta przed dalszymi połączeniami, dopóki nie wykonasz komendy mushqladmin flush-hosts lub wydasz instrukcję FLUSH HOSTS. Patrz sekcja 5.1.3, „Zmienne systemowe serwera”.

Domyślnie mysqld blokuje hosta po 10 błędach połączenia. Możesz dostosować wartość, uruchamiając serwer w następujący sposób:

Shell> mysqld_safe --max_connect_errors=10000 &

Jeśli pojawi się ten komunikat o błędzie dla danego hosta, najpierw sprawdź, czy nie ma nic złego w połączeniach TCP/IP z tego hosta. Jeśli masz problemy z siecią, nie warto zwiększać wartości zmiennej max_connect_errors.

8
RolandoMySQLDBA

Jedną z przyczyn takiej blokady jest przypadek, w którym przypadkowa osoba na hoście decyduje się na monitorowanie MySQL i konfiguruje telnet do portu MySQL na zdalnym serwerze. Przy wystarczającej liczbie wywołań telnet Host jest następnie blokowany przed dalszym dostępem do tego serwera MySQL. W przeciwieństwie do niektórych serwerów, MySQL nie odblokowuje automatycznie dostępu po rozsądnym czasie: administrator serwera musi uderzyć MySQL w głowę.

1
Richard