In einigen Fällen kann es beim Ausführen von MySQL auf Amazon RDS (oder anderswo) erforderlich sein, FLUSH
auszuführen alle host
Datensätze aus MySQL. Normalerweise ist dies erforderlich, wenn der Fehler "Host 'host_name' is blocked"
auftritt auftritt, wodurch weitere Verbindungen von diesem bestimmten host_name
verhindert werden .
Der host_name blocked
Fehler tritt auf, wenn die Anzahl von max_connect_errors
die in der MySQL-Konfiguration angegeben ist, überschritten wird, was bedeutet, dass ein bestimmter Host zu oft erfolglos versucht hat, eine Verbindung herzustellen. Dies ist eine Sicherheitsmaßnahme von MySQL, um ungerechtfertigte Angriffe von Hosts/Benutzern zu verhindern, die nicht über die richtigen Anmeldeinformationen verfügen, aber manchmal kann es versehentlich passieren und muss möglicherweise durch Leeren der Hosts behoben werden.
Was machen Flushing-Hosts?
Führt mit einem MySQL-Benutzer mit entsprechenden Rechten einen FLUSH
aus -Anweisung kann MySQL Flush-Tabellen, Sperren und interne Cache-Systeme löschen, abhängig von den übergebenen options
. Im Fall von FLUSH HOSTS;
, leert MySQL den Host-Cache, was effektiv bedeutet, dass MySQLs Aufzeichnung darüber, welche Hosts derzeit verbunden sind oder kürzlich verbunden waren, zurückgesetzt wird, wodurch weitere Verbindungen von diesen Hosts möglich sind.
FLUSH HOST direkt ausführen
Es kann zwar sein, dass Sie vollständig daran gehindert werden, sich mit MySQL zu verbinden, aber in einigen Fällen ist es möglich, dass das System einen Verbindungsplatz „speichert“, der nur für den primären oder root
verfügbar ist Konto.
Für Amazon RDS
, finden Sie diesen Benutzernamen normalerweise in Ihrer Verwaltungskonsole als Standard oder „Master“. Versuchen Sie, sich mit diesem primären Benutzernamen mit Ihrem MySQL-Server zu verbinden.
Wenn Sie sich verbinden können, ist das Leeren Ihrer Hosts so einfach wie das Ausführen von FLUSH HOSTS;
MySQL-Anweisung:
FLUSH HOSTS;
Sie sollten jetzt Ihren host_name blocked
gelöscht haben Fehler und können sich mit Ihrem Standard-MySQL-Konto verbinden.
Remote-Flushing von Hosts mit MySQLAdmin
Für den Fall, dass Sie sich nicht als Hauptkonto mit MySQL verbinden können und immer noch blocked
erhalten Fehler, besteht die nächste Option darin, sich remote mit dem Server zu verbinden und den flush
auszuführen Befehl mit mysqladmin
Werkzeug.
Dazu müssen Sie mit einem anderen verbunden sein EC2-Instanz oder -Server mit Zugriff auf den RDS-Server, der den Fehler verursacht.
Sobald die Verbindung hergestellt ist, führen Sie den folgenden Befehl aus, wobei die richtigen Optionen zwischen <>
eingesetzt werden :
$ mysqladmin -h <RDS_ENDPOINT_URL> -P <PORT> -u <USER> -p flush-hosts
Bei Erfolg werden die flush-hosts
Der Befehl wird wie erwartet ausgeführt und Sie können sich jetzt ganz normal mit MySQL verbinden.
Neustart der RDS-Instanz
Wenn alles andere fehlschlägt, besteht die letzte Option darin, sich einfach beim RDS-Management-Kontrollfeld anzumelden und die RDS-Instanz, die den Fehler verursacht, manuell neu zu starten. Dadurch wird der hosts cache
effektiv zurückgesetzt für Sie, obwohl es unter Produktionsbedingungen möglicherweise nicht ideal ist.