In sommige gevallen kan het nodig zijn om tijdens het uitvoeren van MySQL op Amazon RDS (of ergens anders) te FLUSH
alle host
records van MySQL. Meestal is dit vereist wanneer de fout "Host 'host_name' is blocked"
optreedt, waardoor extra verbindingen van die specifieke host_name
. worden voorkomen .
De host_name blocked
fout treedt op wanneer het aantal max_connect_errors
gespecificeerd in de MySQL-configuratie wordt overschreden, wat betekent dat een bepaalde host te vaak tevergeefs heeft geprobeerd verbinding te maken. Dit is een beveiligingsmaatregel van MySQL om ongerechtvaardigde aanvallen van hosts/gebruikers die niet over de juiste inloggegevens beschikken te voorkomen, maar soms kan het per ongeluk gebeuren en moet het mogelijk worden opgelost door de hosts te wissen.
Wat doen Flushing-hosts?
Met een MySQL-gebruiker met de juiste privileges voert u een FLUSH
. uit statement, MySQL kan flush-tabellen, vergrendelingen en interne cachesystemen wissen, afhankelijk van de doorgegeven in options
. In het geval van FLUSH HOSTS;
, MySQL zal de hostcache leegmaken, wat in feite betekent dat MySQL's record van welke hosts momenteel of recentelijk zijn verbonden, wordt gereset, waardoor verdere verbindingen van die hosts mogelijk zijn.
FLUSH HOST rechtstreeks uitvoeren
Hoewel het mogelijk is dat u volledig verhinderd bent om verbinding te maken met MySQL, is het in sommige gevallen mogelijk dat het systeem een verbindingsslot "opslaat" dat alleen beschikbaar is voor de primaire of root
account.
Voor Amazon RDS
, deze gebruikersnaam is meestal te vinden in uw beheerconsole als standaard of "Master". Probeer verbinding te maken met uw MySQL-server met deze primaire gebruikersnaam.
Als u verbinding kunt maken, is het leegmaken van uw hosts net zo eenvoudig als het uitvoeren van de FLUSH HOSTS;
MySQL-statement:
FLUSH HOSTS;
Je zou nu je host_name blocked
moeten hebben gewist fout en kunt u verbinding maken met uw standaard MySQL-account.
Hosts op afstand doorspoelen met MySQLAdmin
In het geval dat u geen verbinding kunt maken met MySQL als hoofdaccount en nog steeds blocked
ontvangt fouten, is de volgende optie om op afstand verbinding te maken met de server en de flush
. uit te voeren commando met behulp van de mysqladmin
gereedschap.
Hiervoor moet je verbonden zijn met een ander EC2-instantie of server die toegang heeft tot de RDS-server die de fout veroorzaakt.
Eenmaal verbonden, voert u de volgende opdracht uit met de juiste opties vervangen door <>
:
$ mysqladmin -h <RDS_ENDPOINT_URL> -P <PORT> -u <USER> -p flush-hosts
Indien succesvol, zullen de flush-hosts
opdracht wordt uitgevoerd zoals verwacht en u kunt nu normaal verbinding maken met MySQL.
De RDS-instantie opnieuw opstarten
De laatste optie, als al het andere faalt, is om gewoon in te loggen op het RDS-beheerpaneel en handmatig de RDS-instantie die de fout geeft opnieuw te starten. Dit zal effectief de hosts cache
resetten voor u, hoewel het in productieomstandigheden misschien niet ideaal is.