mysql skip-name-resolve 的解釋

来源:https://www.cnblogs.com/liuxd/archive/2020/05/07/12841912.html
-Advertisement-
Play Games

skip-name-resolve IP address 'XX.XX.XX.XX' has been resolved to the host name 'XX.XX.XX.XX.ro.ovo.sc', which resembles IPv4-address itself. ...


 

mysql連接很慢,登陸到伺服器上查看mysql日誌:
IP address 'XX.XX.XX.XX' has been resolved to the host name 'XX.XX.XX.XX.ro.ovo.sc', which resembles IPv4-address itself.


原因是由於mysql對連接的客戶端進行DNS反向解析。
有2種解決辦法:
1,把client的ip寫在mysql伺服器的/etc/hosts文件里,隨便給個名字就可以了。
2,在 my.cnf 中加入 –skip-name-resolve 。
對於第一種方法比較笨,也不實用,那麼 skip-name-resolve 選項可以禁用dns解析,但是,這樣不能在mysql的授權表中使用主機名了,只能使用IP。
我理解mysql是這樣來處理客戶端解析過程的,
1,當mysql的client連過來的時候,伺服器會主動去查client的功能變數名稱。
2,首先查找 /etc/hosts 文件,搜索功能變數名稱和IP的對應關係。
3,如果hosts文件沒有,則查找DNS設置,如果沒有設置DNS伺服器,會立刻返回失敗,就相當於mysql設置了skip-name-resolve參數,如果設置了DNS伺服器,就進行反向解析,直到timeout。



所謂反向解析是這樣的:
mysql接收到連接請求後,獲得的是客戶端的ip,為了更好的匹配mysql.user里的許可權記錄(某些是用hostname定義的)。
如果mysql伺服器設置了dns伺服器,並且客戶端ip在dns上並沒有相應的hostname,那麼這個過程很慢,導致連接等待。
 

添加skip-name-resolve以後就跳過著一個過程了。

官方的解釋

How MySQL
uses DNS When a new thread connects to mysqld, mysqld will
spawn a new thread to handle the request. This thread will first check
if the hostname is in the hostname cache. If not the thread will call
gethostbyaddr_r() and gethostbyname_r() to resolve the hostname. If
the operating system doesn’t support the above thread-safe calls, the
thread will lock a mutex and call gethostbyaddr() and gethostbyname()
instead. Note that in this case no other thread can resolve other
hostnames that is not in the hostname cache until the first thread is
ready. You can disable DNS host lookup by starting mysqld with
–skip-name-resolve. In this case you can however only use IP names in
the MySQL privilege tables. If you have a very slow DNS and many
hosts, you can get more performance by either disabling DNS lookop
with –skip-name-resolve or by increasing the HOST_CACHE_SIZE define
(default: 128) and recompile mysqld. You can disable the hostname
cache with –skip-host-cache. You can clear the hostname cache with
FLUSH HOSTS or mysqladmin flush-hosts. If you don’t want to allow
connections over TCP/IP, you can do this by starting mysqld with
–skip-networking.

註意:在增加該配置參數後,mysql的授權表中的host欄位就不能夠使用功能變數名稱而只能夠使用 ip地址了,因為這是禁止了功能變數名稱解析的結果。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • [TOC] 前言 1.備份數據的意義 運維工作的核心簡單概括起來就是兩件事:第一個是保護公司的數據,第二個是讓網站能夠7 24小時提供服務。 雖然這兩件事情都很重要,但是相比較而言,丟失一部分數據和讓網站7 24小時提供服務,哪個更重要呢? 對於絕大多數企業來講,失去數據就相當於失去商機,失去產品, ...
  • 虛擬機 下安裝tools tools安裝後桌面會全屏,自適應屏幕 環境準備 虛擬機 "安裝虛擬機教程" linux系統 "ubuntu下載地址" 1. 虛擬機中點擊》虛擬機》安裝tool 2. 打開終端命令視窗(快捷鍵ctrl+alt+t) 3. 輸入su 擁有超級用戶的許可權(提示:第一次打開是沒有 ...
  • ​作者:良知猶存 轉載授權以及圍觀:歡迎添加微信:Allen-Iverson-me-LYN 前言 最近想開發一段單片機的代碼,代碼本身有很多的重覆元素,這重覆定義的一些結構體使用起來有些繁瑣,所以就想用C++開發,C++的繼承 模板類可以很容易的解決這些問題。因為在單片機運行,習慣用MDK或者IAR ...
  • 第四天MySQL 連接查詢(內連接、外連接、交叉連接)(sql99版本下) 子查詢: select 後面(標量子查詢) from 後面(表子查詢) where 或having後面(標量子查詢、列子查詢、行子查詢) exists後面(相關子查詢)(表子查詢) ...
  • 來源:http://www.postgres.cn/docs/11/ 9.7. 模式匹配 PostgreSQL提供了三種獨立的實現模式匹配的方法:SQL LIKE操作符、更近一些的SIMILAR TO操作符(SQL:1999 里添加進來的)和POSIX-風格的正則表達式。除了這些基本的“這個串匹配這 ...
  • 本篇博客參考掘金小冊—— "MySQL 是怎樣運行的:從根兒上理解 MySQL" 先給大家講一個故事,我剛參加工作,在一個小作坊裡面當【碼畜】(儘管現在也是),有一天老闆從我背後走過,說了一句舉世震驚的話:我看你們的資料庫和excel一樣,不就是一行行數據,人家excel還可以對單元格進行美化,還有 ...
  • 業務情景 客戶環境是系統A的1.0版本,開發環境是系統A的2.0版本。2.0版本對於資料庫有部分變更(主要是新增表和欄位,不涉及欄位刪除和變更)。這個時候需要在客戶環境安裝資料庫2.0(表結構、存儲過程都是用的2.0),但是數據要把1.0的同步過來。 實際操作 1、 表結構複製 右擊2.0版本的數據 ...
  • 來源:http://www.postgres.cn/docs/11/ 6.4. 從修改的行中返回數據 有時在修改行的操作過程中獲取數據很有用。INSERT、 UPDATE和DELETE命令都有一個支持這個的可選的 RETURNING子句。使用RETURNING 可以避免執行額外的資料庫查詢來收集數據 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...