MySQL遠程連接慢的問題 |
發(fā)布時間: 2012/7/27 17:27:50 |
1,當 mysql client 發(fā)起連接請求時,MySql Server 會主動去查 client 的主機名。 2,首先查找Windows系統(tǒng)目錄下 /etc/hosts 文件,搜索域名和IP的對應關系。 3,如果hosts文件沒有,則查找DNS設置,如果沒有設置DNS服務器,會立刻返回失;如果設置了DNS服務器,就進行反向解析,直到timeout。 - 第一種方法 修改Hosts 在 MySql Server 所在服務器上,修改 Windows 的 hosts 文件,增加一行記錄,如: 100.ZZZ.YYY.XXX dummy.ju690.cn 然后在 100.ZZZ.YYY.XXX 機器上用 Python 發(fā)起連接請求,經(jīng)測試,可以正常連接,說明 MySql Server 這下可以通過 getnameinfo() 解析出100.ZZZ.YYY.XXX 的主機名了。 但這種方法很機械,所以一般采用下面這種方法。 第二種 修改MySql 的配置文件 my.ini The solution: Just add skip-name-resolve option to your MySQL configuration file (my.ini). 在 MySql Server 的配置文件 My.ini 中,增加如下兩行: [mysqld] skip-name-resolve 它將禁止 MySql Server 對外部連接進行 DNS 解析,使用這一選項可以消除 MySql 進行 DNS 解析的時間。 但需要注意,如果開啟該選項,則所有遠程主機連接授權都要使用IP地址方式,否則MySQL將無法正常處理連接請求。 可能的后果 如果開啟 skip-name-resolve 選項,要確認 MySql 是否采用過主機名的授權, 在 mysql 中運行如下命令: mysql> select user,host from mysql.user where host <> 'localhost' ; 一般會得到以“%”授權(也就是任何地址)的記錄: +------------------+-------------+ | user | host | +------------------+-------------+ | root | % | | user_sync | 192.168.0.113 | 如果有host名是什么“DB1”“DB2”的,那么刪除授權表中有 hostanme 的記錄,然后重啟mysqld。
本文出自:億恩科技【www.cmtents.com】 |