В някои случаи, докато изпълнявате MySQL на Amazon RDS (или другаде), може да е необходимо да FLUSH
всички host
записи от MySQL. Обикновено това се изисква, когато грешката "Host 'host_name' is blocked"
възниква, което ще предотврати допълнителни връзки от този конкретен host_name
.
host_name blocked
грешка възниква, когато броят на max_connect_errors
посочено в конфигурацията на MySQL е надвишено, което означава, че конкретен хост се е опитал да се свърже твърде много пъти неуспешно. Това е мярка за сигурност, въведена от MySQL, за да се предотвратят неоправдани атаки от хостове/потребители, които нямат подходящи идентификационни данни, но понякога това може да се случи по погрешка и може да се наложи да бъде разрешено чрез прочистване на хостовете.
Какво правят Flushing Hosts?
С потребител на MySQL с подходящи привилегии изпълнява FLUSH
изявление, MySQL може да изчисти flush таблици, ключалки и вътрешни кеш системи в зависимост от предадените в options
. В случай на FLUSH HOSTS;
, MySQL ще изпразни кеша на хоста, което на практика означава, че записът на MySQL за това кои хостове са свързани в момента или наскоро са свързани, се нулира, което позволява допълнителни връзки от споменатите хостове.
Директно изпълнение на FLUSH HOST
Въпреки че може да се окаже, че сте напълно възпрепятствани да се свържете с MySQL, в някои случаи е възможно системата да „запази“ слот за връзка, който е достъпен само за основния или root
акаунт.
За Amazon RDS
, това потребителско име обикновено се намира във вашата конзола за управление по подразбиране или като „главен“. Опитайте се да се свържете с вашия MySQL сървър с това основно потребителско име.
Ако можете да се свържете, изтриването на вашите хостове е толкова просто, колкото стартирането на FLUSH HOSTS;
Изявление на MySQL:
FLUSH HOSTS;
Вече трябва да сте изчистили host_name blocked
грешка и да можете да се свържете с вашия стандартен MySQL акаунт.
Прочистване на хостове отдалечено с помощта на MySQLAdmin
В случай, че не можете да се свържете с MySQL като главен акаунт и все още получавате blocked
грешки, следващата опция е да се свържете отдалечено със сървъра и да изпълните flush
команда с помощта на mysqladmin
инструмент.
За да направите това, ще трябва да сте свързани с различен EC2 екземпляр или сървър, който има достъп до RDS сървъра, предизвикващ грешката.
След като се свържете, изпълнете следната команда с подходящите опции, заместени между <>
:
$ mysqladmin -h <RDS_ENDPOINT_URL> -P <PORT> -u <USER> -p flush-hosts
Ако е успешен, flush-hosts
командата ще бъде изпълнена според очакванията и вече ще можете да се свържете с MySQL както обикновено.
Рестартиране на RDS екземпляр
Последната опция, ако всичко друго не успее, е просто да влезете в контролния панел за управление на RDS и ръчно да рестартирате екземпляра на RDS, който дава грешката. Това ефективно ще нулира hosts cache
за вас, въпреки че може да не е идеален при производствени обстоятелства.