По какой причине хост 'host_name' заблокирован в MySQL?


12

Когда я использую неверный пароль для подключения к серверу MySQL, и количество тестов превышает max_connect_errors, и я обнаруживаю, что Aborted_connectsоно также возникает при тестировании, но хост все еще не заблокирован.

Так ли Aborted_connectsза max_connect_errorsтот имя_хост заблокирован?

Ответы:


8

На этом этапе вам может понадобиться запустить FLUSH HOSTS и посмотреть, разблокируется ли он.

Документация MySQL говорит об этом в FLUSH HOSTS:

  • Опорожняет таблицы кэша хоста. Вам следует очищать таблицы хостов, если некоторые из ваших хостов меняют IP-адрес или если вы получаете сообщение об ошибке. Host 'host_name' заблокирован. Когда при подключении к серверу MySQL последовательно возникают ошибки, превышающие max_connect_errors, MySQL предполагает, что что-то не так, и блокирует хост от дальнейших запросов на подключение. Очистка таблиц хоста позволяет дальнейшие попытки подключения с хоста. См. Раздел C.5.2.6, «Хост« host_name »заблокирован». Вы можете запустить mysqld с --max_connect_errors = 999999999, чтобы избежать этого сообщения об ошибке.

Почему хост должен быть заблокирован для начала ??

Согласно документации MySQL :

Если вы получаете следующую ошибку, это означает, что mysqld получил много запросов на соединение от хоста «host_name», которые были прерваны в середине: Хост «host_name» заблокирован из-за многих ошибок соединения. Разблокируйте с помощью «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 и устанавливает telnet на порт MySQL на удаленном сервере. При достаточном количестве вызовов telnet хост блокируется от дальнейшего доступа к этому серверу MySQL. В отличие от некоторых серверов, MySQL автоматически не разблокирует доступ через разумное время: администратор сервера должен постучать MySQL по голове.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.