Documentation Home

27.12.21.2 host_cache 表

MySQL 服务器维护一个内存中的主机缓存,其中包含客户端主机名和 IP 地址信息,用于避免域名系统 (DNS) 查找。该 host_cache表公开了此缓存的内容。系统变量控制主机缓存的 host_cache_size大小,以及host_cache表的大小。有关主机缓存的操作和配置信息,请参阅第 5.1.12.3 节,“DNS 查找和主机缓存”

因为该host_cache表公开了主机缓存的内容,所以可以使用SELECT语句对其进行检查。这可能有助于您诊断连接问题的原因。

host_cache表有以下列:

  • IP

    连接到服务器的客户端的 IP 地址,以字符串表示。

  • HOST

    该客户端 IP 的已解析 DNS 主机名,或者 NULL如果名称未知。

  • HOST_VALIDATED

    客户端IP的IP到主机名到IP DNS解析是否成功。如果 HOST_VALIDATEDYES,则将该HOST列作为IP对应的主机名,避免额外调用DNS。在 HOST_VALIDATEDis 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

    IP 到主机名 DNS 解析期间的暂时性错误数。

  • COUNT_NAMEINFO_PERMANENT_ERRORS

    IP 到主机名 DNS 解析期间的永久错误数。

  • COUNT_FORMAT_ERRORS

    主机名格式错误的数量。MySQL 不会将系统表中的Host列值mysql.user与主机名进行匹配,其中一个或多个名称的初始部分完全是数字,例如 1.2.example.com. 而是使用客户端 IP 地址。对于这种类型的匹配没有发生的原因,请参阅 第 6.2.4 节,“指定帐户名称”

  • COUNT_ADDRINFO_TRANSIENT_ERRORS

    主机名到 IP 反向 DNS 解析期间的暂时性错误数。

  • COUNT_ADDRINFO_PERMANENT_ERRORS

    主机名到 IP 反向 DNS 解析期间的永久错误数。

  • COUNT_FCRDNS_ERRORS

    转发确认的反向 DNS 错误数。当 IP 到主机名到 IP DNS 解析产生的 IP 地址与客户端原始 IP 地址不匹配时,就会发生这些错误。

  • COUNT_HOST_ACL_ERRORS

    由于不允许任何用户从客户端主机连接而发生的错误数。在这种情况下,服务器返回 ER_HOST_NOT_PRIVILEGED并且甚至不要求用户名或密码。

  • 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

    将代理用户 A 代理给另一个不存在的用户 B 时检测到的错误数。

  • COUNT_PROXY_USER_ACL_ERRORS

    当代理用户 A 被代理到另一个确实存在但 A 没有PROXY权限的用户 B 时检测到的错误数。

  • COUNT_AUTHENTICATION_ERRORS

    身份验证失败导致的错误数。

  • COUNT_SSL_ERRORS

    由于 SSL 问题导致的错误数。

  • COUNT_MAX_USER_CONNECTIONS_ERRORS

    超出每用户连接配额导致的错误数。请参阅第 6.2.21 节,“设置帐户资源限制”

  • COUNT_MAX_USER_CONNECTIONS_PER_HOUR_ERRORS

    超出每用户每小时连接配额导致的错误数。请参阅 第 6.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表的特权。截断表会刷新主机缓存,其效果如刷新主机缓存中 所述