29.12.22.3 Таблица host_cache
Сервер MySQL поддерживает кэш хостов в оперативной памяти, содержащий информацию о имени и IP-адресе клиента, для избежания запросов к системе доменных имён (DNS). Таблица host_cache предоставляет содержимое этого кэша. Переменная системы host_cache_size управляет размером кэша хостов, а также размером таблицы host_cache. Для получения информации об операциях и конфигурации кэша хостов см. Раздел 7.1.12.3, «DNS-запросы и кэш хостов».
Поскольку таблица host_cache предоставляет содержимое кэша хостов, её можно просмотреть с помощью инструкций SELECT. Это может помочь в диагностике причин проблем с подключением.
Таблица host_cache содержит следующие столбцы:
-
IPIP-адрес клиента, подключившегося к серверу, представленный в виде строки.
-
HOSTРазрешенное имя хоста DNS для этого IP-адреса клиента или
NULL, если имя неизвестно. -
HOST_VALIDATEDУспешно ли выполнено разрешение DNS для преобразования IP-адреса клиента в имя хоста. Если
HOST_VALIDATEDравноYES, то значение в столбцеHOSTиспользуется в качестве имени хоста, соответствующего IP, чтобы избежать дополнительных вызовов DNS. ПокаHOST_VALIDATEDравноNO, для каждой попытки подключения выполняется разрешение DNS, пока оно не завершится с допустимым результатом или постоянной ошибкой. Эта информация позволяет серверу избежать кэширования плохих или отсутствующих имён хостов во время временных сбоев DNS, что негативно повлияет на клиентов навсегда. -
SUM_CONNECT_ERRORSКоличество ошибок подключения, которые считаются «блокирующими» (оцениваются по отношению к системной переменной
max_connect_errors). Подсчитываются только ошибки протокола рукопожатия, и только для хостов, которые прошли валидацию (HOST_VALIDATED = YES).После того как
SUM_CONNECT_ERRORSдля данного хоста достигнет значенияmax_connect_errors, новые подключения с этого хоста блокируются. ЗначениеSUM_CONNECT_ERRORSможет превысить значениеmax_connect_errors, поскольку несколько попыток подключения с одного хоста могут происходить одновременно, пока хост не заблокирован. Любая или все из них могут завершиться неудачей, независимо увеличиваяSUM_CONNECT_ERRORS, возможно, до значенияmax_connect_errors.Предположим, что
max_connect_errorsравно 200, аSUM_CONNECT_ERRORSдля данного хоста равно 199. Если 10 клиентов пытаются подключиться с этого хоста одновременно, ни один из них не заблокирован, потому чтоSUM_CONNECT_ERRORSне достигло 200. Если для пяти клиентов возникают ошибки блокировки, тоSUM_CONNECT_ERRORSувеличивается на единицу для каждого клиента, в результате чего значениеSUM_CONNECT_ERRORSсоставит 204. Другие пять клиентов успешно подключаются и не блокируются, потому что значениеSUM_CONNECT_ERRORS, когда начались их попытки подключения, не достигло 200. Новые подключения с хоста, которые начинаются после того, какSUM_CONNECT_ERRORSдостигнет 200, блокируются. -
COUNT_HOST_BLOCKED_ERRORSКоличество подключений, которые были заблокированы, потому что
SUM_CONNECT_ERRORSпревысило значение системной переменнойmax_connect_errors. -
COUNT_NAMEINFO_TRANSIENT_ERRORSКоличество временных ошибок при разрешении DNS от IP-адреса к имени хоста.
-
COUNT_NAMEINFO_PERMANENT_ERRORSКоличество постоянных ошибок при разрешении DNS от IP-адреса к имени хоста.
-
COUNT_FORMAT_ERRORSКоличество ошибок формата имени хоста. MySQL не выполняет сопоставление значений столбца
Hostв системной таблицеmysql.userс именами хостов, в которых один или несколько начальных компонентов имени полностью цифровые, например,1.2.example.com. Вместо этого используется IP-адрес клиента. Подробное обоснование того, почему не происходит такое сопоставление, см. в разделе 8.2.4 «Указание имён учётных записей». -
COUNT_ADDRINFO_TRANSIENT_ERRORSКоличество временных ошибок при обратном разрешении DNS от имени хоста к IP-адресу.
-
COUNT_ADDRINFO_PERMANENT_ERRORSКоличество постоянных ошибок при обратном разрешении DNS от имени хоста к IP-адресу.
-
COUNT_FCRDNS_ERRORSКоличество ошибок подтверждения обратного DNS по прямому адресу. Эти ошибки возникают, когда разрешение DNS от IP-адреса к имени хоста и обратно к IP-адресу приводит к IP-адресу, не совпадающему с IP-адресом исходного клиента.
-
COUNT_HOST_ACL_ERRORSКоличество ошибок, возникающих, потому что никому не разрешено подключаться с хоста клиента. В таких случаях сервер возвращает
COUNT_HOST_ACL_ERRORSи даже не запрашивает имя пользователя или пароль. -
COUNT_NO_AUTH_PLUGIN_ERRORSКоличество ошибок из-за запросов недоступного плагина аутентификации. Плагин может быть недоступен, например, если он никогда не загружался или попытка загрузки завершилась неудачей.
-
COUNT_AUTH_PLUGIN_ERRORSКоличество ошибок, сообщенных плагинами аутентификации.
Плагин аутентификации может сообщать различные коды ошибок, чтобы указать основную причину сбоя. В зависимости от типа ошибки увеличивается один из этих столбцов:
COUNT_AUTHENTICATION_ERRORS,COUNT_AUTH_PLUGIN_ERRORS,COUNT_HANDSHAKE_ERRORS. Новые коды возврата являются необязательным расширением существующего API плагинов. Неизвестные или непредвиденные ошибки плагинов подсчитываются в столбцеCOUNT_AUTH_PLUGIN_ERRORS. -
COUNT_HANDSHAKE_ERRORSКоличество ошибок, обнаруженных на уровне протокола связи.
-
COUNT_PROXY_USER_ERRORSКоличество ошибок, обнаруженных при проксировании пользователя А на другого пользователя В, который не существует.
-
COUNT_PROXY_USER_ACL_ERRORSКоличество ошибок, обнаруженных при проксировании пользователя А на другого пользователя В, который существует, но для которого у А нет
PROXYпривилегии. -
COUNT_AUTHENTICATION_ERRORSКоличество ошибок, вызванных неудачной аутентификацией.
-
COUNT_SSL_ERRORSКоличество ошибок, связанных с проблемами SSL.
-
COUNT_MAX_USER_CONNECTIONS_ERRORSКоличество ошибок, вызванных превышением квот на подключения на пользователя. См. раздел 8.2.21, «Установление лимитов ресурсов учетной записи».
-
COUNT_MAX_USER_CONNECTIONS_PER_HOUR_ERRORSКоличество ошибок, вызванных превышением квот на подключения на пользователя в час. См. раздел 8.2.21, «Установление лимитов ресурсов учетной записи».
-
COUNT_DEFAULT_DATABASE_ERRORSКоличество ошибок, связанных с базой данных по умолчанию. Например, база данных не существует или у пользователя нет привилегий для доступа к ней.
-
COUNT_INIT_CONNECT_ERRORSКоличество ошибок, вызванных ошибками выполнения инструкций в значении системной переменной
init_connect. -
COUNT_LOCAL_ERRORSКоличество ошибок, специфичных для реализации сервера и не связанных с сетью, аутентификацией или авторизацией. Например, ситуации с нехваткой памяти попадают в эту категорию.
-
COUNT_UNKNOWN_ERRORSКоличество других, неизвестных ошибок, не учтённых другими столбцами в этой таблице. Этот столбец зарезервирован для будущего использования, на случай необходимости отслеживания новых условий ошибки, при условии сохранения обратной совместимости и структуры таблицы
host_cache. -
FIRST_SEENОтметка времени первой попытки подключения, увиденной от клиента в столбце
IP. -
LAST_SEENОтметка времени последней попытки подключения, увиденной от клиента в столбце
IP. -
FIRST_ERROR_SEENОтметка времени первой ошибки, увиденной от клиента в столбце
IP. -
LAST_ERROR_SEENОтметка времени последней ошибки, увиденной от клиента в столбце
IP.
В таблице host_cache есть такие индексы:
Первичный ключ по (
IP)Индекс по (
HOST)
TRUNCATE TABLE разрешено для таблицы host_cache. Требуется привилегия DROP для этой таблицы. Обнуление таблицы очищает кэш хоста, что имеет последствия, описанные в Очистке кэша хоста.
© 2025 Oracle
Licensed under the GPLv2 License.