it-swarm-eu.dev

Was ist der Grund dafür, dass Host 'Host_name' in MySQL blockiert ist?

Wenn ich ein falsches Passwort verwende, um eine Verbindung zum MySQL-Server herzustellen, und die Testanzahl über dem max_connect_errors Liegt und ich finde, dass der Aborted_connects Auch als die Anzahl der Tests auftritt, der Host jedoch immer noch nicht verstopft.

Wird also Aborted_connects Über max_connect_errors Gesperrt, dann wird Hostname blockiert?

12
user3157

Zu diesem Zeitpunkt müssen Sie möglicherweise FLUSH HOSTS ausführen und prüfen, ob dies entsperrt wird.

Die MySQL-Dokumentation sagt dies über FLUSH HOSTS:

  • Leert die Host-Cache-Tabellen. Sie sollten die Host-Tabellen leeren, wenn einige Ihrer Hosts die IP-Adresse ändern oder wenn die Fehlermeldung Host 'Hostname' blockiert wird. Wenn beim Herstellen einer Verbindung zum MySQL-Server nacheinander mehr als max_connect_errors-Fehler für einen bestimmten Host auftreten, geht MySQL davon aus, dass etwas nicht stimmt, und blockiert den Host für weitere Verbindungsanforderungen. Das Leeren der Host-Tabellen ermöglicht weitere Verbindungsversuche vom Host. Siehe Abschnitt C.5.2.6, „Host 'Hostname' ist blockiert“. Sie können mysqld mit --max_connect_errors = 999999999 starten, um diese Fehlermeldung zu vermeiden.

Warum sollte ein Host zunächst blockiert werden?

Gemäß der MySQL-Dokumentation :

Wenn der folgende Fehler angezeigt wird, bedeutet dies, dass mysqld viele Verbindungsanforderungen vom Host 'Hostname' erhalten hat, die in der Mitte unterbrochen wurden: Host 'Hostname' ist aufgrund vieler Verbindungsfehler blockiert. Entsperren mit 'mysqladmin flush-hosts' Die Anzahl der zulässigen unterbrochenen Verbindungsanforderungen wird durch den Wert der Systemvariablen max_connect_errors bestimmt. Nachdem max_connect_errors fehlgeschlagene Anforderungen erfüllt hat, geht mysqld davon aus, dass etwas nicht stimmt (z. B. dass jemand versucht einzubrechen), und blockiert den Host für weitere Verbindungen, bis Sie einen Befehl mysqladmin flush-hosts ausführen oder eine FLUSH HOSTS-Anweisung ausgeben. Siehe Abschnitt 5.1.3, „Server-Systemvariablen“.

Standardmäßig blockiert mysqld einen Host nach 10 Verbindungsfehlern. Sie können den Wert anpassen, indem Sie den Server wie folgt starten:

Shell> mysqld_safe --max_connect_errors=10000 &

Wenn Sie diese Fehlermeldung für einen bestimmten Host erhalten, sollten Sie zunächst überprüfen, ob mit den TCP/IP-Verbindungen von diesem Host nichts falsch ist. Wenn Sie Netzwerkprobleme haben, ist es nicht sinnvoll, den Wert der Variablen max_connect_errors zu erhöhen.

8
RolandoMySQLDBA

Eine Ursache für eine solche Blockierung ist, dass eine zufällige Person auf dem Host eine Überwachung von MySQL durchführt und ein Telnet für den MySQL-Port auf dem Remote-Server einrichtet. Bei einer ausreichenden Anzahl von Telnet-Aufrufen wird der Host dann für den weiteren Zugriff auf diesen MySQL-Server gesperrt. Im Gegensatz zu einigen Servern entsperrt MySQL den Zugriff nach einer angemessenen Zeit nicht automatisch: Der Serveradministrator muss MySQL auf den Kopf stellen.

1
Richard