I nogle tilfælde, mens du kører MySQL på Amazon RDS (eller andre steder), kan det være nødvendigt at FLUSH
alle host
optegnelser fra MySQL. Dette er typisk påkrævet, når fejlen "Host 'host_name' is blocked"
opstår, hvilket vil forhindre yderligere forbindelser fra det pågældende host_name
.
host_name blocked
fejl opstår, når antallet af max_connect_errors
specificeret i MySQL's konfiguration er overskredet, hvilket betyder, at en bestemt vært forsøgte at oprette forbindelse for mange gange uden held. Dette er en sikkerhedsforanstaltning, som MySQL har indført for at forhindre uberettigede angreb fra værter/brugere, der ikke har de korrekte legitimationsoplysninger, men nogle gange kan det ske ved en fejl og skal muligvis løses ved at tømme værterne.
Hvad gør Flushing Hosts?
Med en MySQL-bruger med de rette rettigheder udføres en FLUSH
sætning, kan MySQL rydde skylletabeller, låse og interne cachesystemer afhængigt af de godkendte options
. I tilfælde af FLUSH HOSTS;
, vil MySQL tømme værtscachen, hvilket reelt betyder, at MySQL's registrering af, hvilke værter der i øjeblikket er eller for nylig har oprettet forbindelse, nulstilles, hvilket giver mulighed for yderligere forbindelser fra disse værter.
Udførelse af FLUSH HOST direkte
Selvom det kan være, at du er fuldstændig forhindret i at oprette forbindelse til MySQL, er det i nogle tilfælde muligt, at systemet vil "gemme" en forbindelsesplads, som kun er tilgængelig for den primære eller root
konto.
Til Amazon RDS
, findes dette brugernavn typisk i din administrationskonsol som standard eller "Master". Forsøg at oprette forbindelse til din MySQL-server med dette primære brugernavn.
Hvis du er i stand til at oprette forbindelse, er det lige så enkelt at skylle dine værter som at køre FLUSH HOSTS;
MySQL-sætning:
FLUSH HOSTS;
Du skulle nu have ryddet dit host_name blocked
fejl og være i stand til at oprette forbindelse til din standard MySQL-konto.
Fjernskylning af værter ved hjælp af MySQLAdmin
I tilfælde af at du ikke er i stand til at oprette forbindelse til MySQL som hovedkontoen og stadig modtager blocked
fejl, er den næste mulighed at oprette forbindelse til serveren eksternt og udføre flush
kommando ved hjælp af mysqladmin
værktøj.
For at gøre dette skal du have forbindelse til en anden EC2-instans eller server, der har adgang til den RDS-server, der producerer fejlen.
Når du er tilsluttet, skal du udføre følgende kommando med de korrekte indstillinger erstattet mellem <>
:
$ mysqladmin -h <RDS_ENDPOINT_URL> -P <PORT> -u <USER> -p flush-hosts
Hvis det lykkes, flush-hosts
kommandoen vil blive udført som forventet, og du vil nu være i stand til at oprette forbindelse til MySQL som normalt.
Genstart af RDS-forekomsten
Den sidste mulighed, hvis alt andet fejler, er blot at logge ind på RDS-styringskontrolpanelet og manuelt genstarte den RDS-instans, der giver fejlen. Dette vil effektivt nulstille hosts cache
for dig, selvom det måske ikke er ideelt under produktionsforhold.