MySQL遠(yuǎn)程連接慢的問(wèn)題 |
發(fā)布時(shí)間: 2012/7/27 17:27:50 |
1,當(dāng) mysql client 發(fā)起連接請(qǐng)求時(shí),MySql Server 會(huì)主動(dòng)去查 client 的主機(jī)名。 2,首先查找Windows系統(tǒng)目錄下 /etc/hosts 文件,搜索域名和IP的對(duì)應(yīng)關(guān)系。 3,如果hosts文件沒(méi)有,則查找DNS設(shè)置,如果沒(méi)有設(shè)置DNS服務(wù)器,會(huì)立刻返回失;如果設(shè)置了DNS服務(wù)器,就進(jìn)行反向解析,直到timeout。 - 第一種方法 修改Hosts 在 MySql Server 所在服務(wù)器上,修改 Windows 的 hosts 文件,增加一行記錄,如: 100.ZZZ.YYY.XXX dummy.ju690.cn 然后在 100.ZZZ.YYY.XXX 機(jī)器上用 Python 發(fā)起連接請(qǐng)求,經(jīng)測(cè)試,可以正常連接,說(shuō)明 MySql Server 這下可以通過(guò) getnameinfo() 解析出100.ZZZ.YYY.XXX 的主機(jī)名了。 但這種方法很機(jī)械,所以一般采用下面這種方法。 第二種 修改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 對(duì)外部連接進(jìn)行 DNS 解析,使用這一選項(xiàng)可以消除 MySql 進(jìn)行 DNS 解析的時(shí)間。 但需要注意,如果開(kāi)啟該選項(xiàng),則所有遠(yuǎn)程主機(jī)連接授權(quán)都要使用IP地址方式,否則MySQL將無(wú)法正常處理連接請(qǐng)求。 可能的后果 如果開(kāi)啟 skip-name-resolve 選項(xiàng),要確認(rèn) MySql 是否采用過(guò)主機(jī)名的授權(quán), 在 mysql 中運(yùn)行如下命令: mysql> select user,host from mysql.user where host <> 'localhost' ; 一般會(huì)得到以“%”授權(quán)(也就是任何地址)的記錄: +------------------+-------------+ | user | host | +------------------+-------------+ | root | % | | user_sync | 192.168.0.113 | 如果有host名是什么“DB1”“DB2”的,那么刪除授權(quán)表中有 hostanme 的記錄,然后重啟mysqld。
本文出自:億恩科技【www.allwellnessguide.com】 服務(wù)器租用/服務(wù)器托管中國(guó)五強(qiáng)!虛擬主機(jī)域名注冊(cè)頂級(jí)提供商!15年品質(zhì)保障!--億恩科技[ENKJ.COM] |