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.