Mysql
 sql >> Datenbank >  >> RDS >> Mysql

So führen Sie mysqladmin-Flush-Hosts auf Amazon RDS aus

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.