sql >> Database >  >> RDS >> Mysql

Mysqladmin flush-hosts uitvoeren op Amazon RDS

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.


  1. MariaDB SYSTEM_USER() uitgelegd

  2. Samenvoegen van JSON(B)-kolommen in query

  3. Wereldback-updag:hoe en wanneer moet u een back-up van uw database maken?

  4. Fuzzy matching met T-SQL