文件首頁
MySQL 8.4 參考手冊
相關文件 下載本手冊
PDF (US Ltr) - 39.9Mb
PDF (A4) - 40.0Mb
Man Pages (TGZ) - 258.5Kb
Man Pages (Zip) - 365.5Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


29.12.22.3 host_cache 表格

MySQL 伺服器維護一個記憶體內的 host 快取,其中包含用戶端主機名稱和 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。若其中 5 個用戶端發生封鎖錯誤,則每個用戶端的 SUM_CONNECT_ERRORS 會加一,導致 SUM_CONNECT_ERRORS 的值為 204。其他 5 個用戶端成功連線且未被封鎖,因為在它們開始嘗試連線時,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 位址不符時,就會發生這些錯誤。

  • 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 權限。截斷表格會清空主機快取,其效果如清空主機快取中所述。