文件首頁
MySQL 9.0 參考手冊
相關文件 下載本手冊
PDF (美式信紙) - 40.0Mb
PDF (A4) - 40.1Mb
Man Pages (TGZ) - 258.2Kb
Man Pages (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 都會加一,導致 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 被代理到另一個存在的使用者 B,但 A 沒有 B 的 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)上的索引

允許對 host_cache 資料表使用 TRUNCATE TABLE。它需要該資料表的 DROP 權限。截斷資料表會清除主機快取,其效果如清除主機快取中所述。