V některých případech při spuštění MySQL na Amazon RDS (nebo jinde) může být nutné FLUSH
všechny host
záznamy z MySQL. Obvykle je to vyžadováno, když se zobrazí chyba "Host 'host_name' is blocked"
dojde, což zabrání dalším připojením z tohoto konkrétního host_name
.
host_name blocked
chyba nastane, když počet max_connect_errors
zadaná v konfiguraci MySQL je překročena, což znamená, že se konkrétní hostitel příliš mnohokrát neúspěšně pokusil připojit. Toto je bezpečnostní opatření zavedené MySQL, aby se zabránilo neoprávněným útokům od hostitelů/uživatelů, kteří nemají správná pověření, ale někdy k tomu může dojít omylem a může být nutné jej vyřešit vyprázdněním hostitelů.
Co dělají hostitelé splachování?
S uživatelem MySQL se správnými oprávněními provede FLUSH
může MySQL vymazat flush tabulky, zámky a interní systémy mezipaměti v závislosti na předávaných v options
. V případě FLUSH HOSTS;
, MySQL vyprázdní mezipaměť hostitele, což v podstatě znamená, že záznam MySQL o tom, kteří hostitelé jsou aktuálně nebo nedávno připojeni, je resetován, což umožňuje další připojení z uvedených hostitelů.
Přímé provádění FLUSH HOST
I když se může stát, že vám bude zcela znemožněno připojení k MySQL, v některých případech je možné, že systém „uloží“ připojovací slot, který je dostupný pouze pro primární nebo root
účet.
Pro Amazon RDS
, toto uživatelské jméno se obvykle nachází ve vaší konzole pro správu jako výchozí nebo „Master“. Pokuste se připojit k vašemu serveru MySQL s tímto primárním uživatelským jménem.
Pokud se můžete připojit, je proplachování vašich hostitelů stejně jednoduché jako spuštění FLUSH HOSTS;
Příkaz MySQL:
FLUSH HOSTS;
Nyní byste měli vymazat host_name blocked
chyba a budete se moci připojit ke svému standardnímu účtu MySQL.
Vzdálené proplachování hostitelů pomocí MySQLAdmin
V případě, že se nemůžete připojit k MySQL jako hlavnímu účtu a stále dostáváte blocked
chyby, další možností je připojit se k serveru vzdáleně a provést flush
pomocí příkazu mysqladmin
nástroj.
Chcete-li to provést, musíte být připojeni k jinému Instance EC2 nebo server, který má přístup k serveru RDS, který způsobil chybu.
Po připojení spusťte následující příkaz se správnými možnostmi nahrazenými mezi <>
:
$ mysqladmin -h <RDS_ENDPOINT_URL> -P <PORT> -u <USER> -p flush-hosts
Pokud bude úspěšný, flush-hosts
příkaz bude proveden podle očekávání a nyní se budete moci připojit k MySQL jako obvykle.
Restartování instance RDS
Poslední možností, pokud vše ostatní selže, je jednoduše se přihlásit k ovládacímu panelu správy RDS a ručně restartovat instanci RDS, která způsobuje chybu. To účinně resetuje hosts cache
pro vás, i když to nemusí být ideální v podmínkách výroby.