很多朋友都可能碰到過遠程連接mysql要不就是連接不上,要不就是很慢,我今天也碰到了下面我來把我解決連接速度慢方法分享給大家。
我想連接同事機器上的數據庫。在賬號密碼什麼都正確的情況,還是遇到了幾個問題。
1、防火牆
通過telnet 同事機器IP 3306 , 結果死活是連不上。曾經處理過類似的問題。於是把同事機器上的防火牆直接關閉就能telnet了。
2、連接數據庫很慢
在PHP中連接MySQL數據庫非常慢。我以為是PHP擴展有異常。於是換cmd來操作,結果連接還是很慢。這讓我排除了是PHP的原因。百度一下,得知是因為MySQL連接有以下幾個步驟:
1、DNS解析連接的HOST
2、解析不了,就直接當前IP連接。
於是,通過在mysql的配置文件中的[mysqld]下面添加了一行代碼:
skip-name-resolve 在連接遠程數據庫的時候,直接跳過MySQL的DNS解析
2. 在啟動mysqld服務器的時候,附加 –skip-name-resolve 選項 ,原理與第一個一樣
3. 增大HOST_CACHE_SIZE的值,HOST_CACHE_SIZE的默認值是128 適合多個遠程主機
因為我是使用IP來連接,根本DNS解析不了。所以,在解析的過程中就占用了很長的時間。這段時間導致DNS解析超時。通過上面的代碼,直接讓MYSQL不要去DNS解析。
注意:若使用–skip-grant-tables系統將對任何用戶的訪問不做任何訪問控制,但可以用 mysqladmin flush-privileges或mysqladmin reload來開啟訪問控制;默認情況是show databases語句對所有用戶開放,
如果mysql服務器沒有開遠程帳戶,就在my.ini裡面加上skip-grant-tables