文档首页
MySQL 9.0 参考手册
相关文档 下载此手册
PDF (US Ltr) - 40.0Mb
PDF (A4) - 40.1Mb
手册页 (TGZ) - 258.2Kb
手册页 (Zip) - 365.3Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


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 表包含以下列

  • IP

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

  • HOST

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

  • HOST_VALIDATED

    客户端 IP 的 IP 到主机名到 IP DNS 解析是否成功执行。如果 HOST_VALIDATEDYES,则 HOST 列用作与 IP 相对应的主机名,以便可以避免对 DNS 的额外调用。当 HOST_VALIDATEDNO 时,每次连接尝试都会尝试进行 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 都会增加 1,最终的 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 不会将 mysql.user 系统表中的 Host 列值与主机名进行匹配,这些主机名的一个或多个初始部分完全是数字,例如 1.2.example.com。相反,将使用客户端 IP 地址。有关此类匹配未执行的原因,请参见 第 8.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_ERRORSCOUNT_AUTH_PLUGIN_ERRORSCOUNT_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

    由于超出每个用户连接配额而发生的错误数量。请参见 第 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 权限。截断表将刷新主机缓存,这将产生 刷新主机缓存 中描述的效果。