Що є причиною того, що Host 'ім'я_ хоста' заблоковано в MySQL?


12

Коли я використовую неправильний пароль для підключення до сервера mysql, і кількість тестів закінчена max_connect_errors, і я вважаю, що Aborted_connectsце також виникає як підрахунок, який я тестую, але хост все ще не заблокований.

Так заблоковано Aborted_connectsнад max_connect_errorsтодішнім ім'ям хоста?

Відповіді:


8

У цей момент вам може знадобитися запустити FLUSH HOSTS і подивитися, чи не розблокується це.

Документація MySQL говорить про це ЗВ'ЯЗКОВИМ ДОМАШНЯМИ:

  • Порожні таблиці кеш-хостів. Ви повинні змити таблиці хостів, якщо деякі з ваших хостів змінюють IP-адресу або якщо ви отримуєте повідомлення про помилку Хост 'host_name' заблокований. Коли під час підключення до сервера MySQL послідовно виникає більше ніж max_connect_errors помилок для даного хоста, MySQL припускає, що щось не так, і блокує хост від подальших запитів на з'єднання. Промивання таблиць хостів надає можливість подальших спроб з'єднання з хостом. Див. Розділ C.5.2.6, "Хост" ім'я хоста "заблоковано". Ви можете запустити mysqld з --max_connect_errors = 999999999, щоб уникнути цього повідомлення про помилку.

Чому хост слід заблокувати для початку ??

Відповідно до документації MySQL :

Якщо ви отримаєте таку помилку, це означає, що mysqld отримав багато запитів на з'єднання від хоста 'ім'я хоста', які були перервані в середині: Хост 'ім'я хоста' блокується через багато помилок підключення. Розблокувати за допомогою "mysqladmin flush-hosts" Кількість дозволених запитів на з'єднання визначається значенням системної змінної max_connect_errors. Після невдалих запитів max_connect_errors, mysqld припускає, що щось не так (наприклад, хтось намагається прорватися) і блокує хост від подальших з'єднань, поки ви не виконаєте команду mysqladmin flush-hosts або не видасте оператор FLUSH HOSTS. Див. Розділ 5.1.3, «Змінні системи сервера».

За замовчуванням mysqld блокує хост після 10 помилок підключення. Ви можете скорегувати значення, запустивши сервер так:

shell> mysqld_safe --max_connect_errors=10000 &

Якщо ви отримуєте це повідомлення про помилку для даного хоста, спершу переконайтеся, що з підключеннями TCP / IP від ​​цього хоста нічого поганого. Якщо у вас виникають проблеми з мережею, вам не буде корисно збільшувати значення змінної max_connect_errors.


Схоже, ці помилки переходять у звичайний журнал помилок MySQL. Чи є спосіб побачити журнал помилок підключення, що блокує хост? Також я зазначив "послідовно" вище. Отже, просто потрібен успішний зв’язок між ними? Або я повинен просто задати нове запитання?
Марк Л.

1

Однією з причин такого блокування є те, коли якась випадкова людина на хості вирішує зробити деякий моніторинг MySQL та налаштовує телнет до порту MySQL на віддаленому сервері. При достатній кількості викликів telnet хост потім блокується від подальшого доступу до цього сервера MySQL. На відміну від деяких серверів, MySQL автоматично не розблокує доступ через розумну кількість часу: адміністратору сервера доводиться стукати MySQL по голові.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.