sql >> Databasteknik >  >> RDS >> Mysql

Hur man kör mysqladmin flush-hosts på Amazon RDS

I vissa fall när du kör MySQL på Amazon RDS (eller någon annanstans), kan det vara nödvändigt att FLUSH alla host poster från MySQL. Vanligtvis krävs detta när felet "Host 'host_name' is blocked" inträffar, vilket kommer att förhindra ytterligare anslutningar från just den host_name .

host_name blocked fel uppstår när antalet max_connect_errors som anges i MySQL:s konfiguration överskrids, vilket betyder att en viss värd försökte ansluta för många gånger utan framgång. Detta är en säkerhetsåtgärd på plats av MySQL för att förhindra omotiverade attacker från värdar/användare som inte har korrekta referenser, men ibland kan det inträffa av misstag och kan behöva lösas genom att tömma värdarna.

Vad gör Flushing Hosts?

Med en MySQL-användare med rätt behörighet körs en FLUSH kan MySQL rensa tömningstabeller, lås och interna cachesystem beroende på vilka options som har angetts. . I fallet med FLUSH HOSTS; , kommer MySQL att tömma värdcachen, vilket i praktiken innebär att MySQL:s register över vilka värdar som för närvarande är eller nyligen har anslutit återställs, vilket möjliggör ytterligare anslutningar från nämnda värdar.

Exekvera FLUSH HOST direkt

Även om det kan vara så att du är helt förhindrad att ansluta till MySQL, är det i vissa fall möjligt att systemet "sparar" en anslutningsplats som endast är tillgänglig för den primära eller root konto.

För Amazon RDS , det här användarnamnet finns vanligtvis i din hanteringskonsol som standard eller "Master". Försök att ansluta till din MySQL-server med detta primära användarnamn.

Om du kan ansluta är det lika enkelt att spola dina värdar som att köra FLUSH HOSTS; MySQL-sats:

FLUSH HOSTS;

Du bör nu ha rensat ditt host_name blocked fel och kunna ansluta till ditt vanliga MySQL-konto.

Spolning av värdar på distans med MySQLAdmin

I händelse av att du inte kan ansluta till MySQL som huvudkonto och fortfarande får blocked fel, är nästa alternativ att ansluta till servern på distans och köra flush kommandot med mysqladmin verktyg.

För att göra detta måste du vara ansluten till ett annat EC2-instans eller server som har åtkomst till RDS-servern som orsakar felet.

När du är ansluten, kör följande kommando med de rätta alternativen ersatta mellan <> :

$ mysqladmin -h <RDS_ENDPOINT_URL> -P <PORT> -u <USER> -p flush-hosts

Om det lyckas, flush-hosts kommandot kommer att köras som förväntat och du kommer nu att kunna ansluta till MySQL som vanligt.

Starta om RDS-instansen

Det sista alternativet, om allt annat misslyckas, är att helt enkelt logga in på RDS-hanteringskontrollpanelen och manuellt starta om RDS-instansen som ger felet. Detta kommer effektivt att återställa hosts cache för dig, även om det kanske inte är idealiskt under produktionsförhållanden.


  1. Visa värden från en MySQL-databastabell inuti en HTML-tabell på en webbsida

  2. SQL DROP TABLE för nybörjare

  3. MySQL Master To Master Replikering

  4. Hur Round() fungerar i PostgreSQL