1. 程式人生 > >mysql遠端連線和訪問慢的解決方法

mysql遠端連線和訪問慢的解決方法

轉載1:今天公司的網路做了調整,造成原本連線很快的mysql伺服器,連線速度奇慢。以前幾十毫秒的連線現在完成一次要近5秒鐘,在排除了網路問題後,只有從mysql下手。原來每次訪問db,mysql就會試圖去解析來訪問的機器的domain name,如果這時解析不料,等一段時間會失敗,資料才能被取過來。解決方法如下:
修改 my.cnf
[mysqld]
skip-name-resolve #Don’t resolve hostnames 
重啟,問題解決。

轉載2:最近,web後臺管理伺服器速度挺慢,一開始以為是apache瓶頸的問題,因為發現大量的搜尋引擎老是爬過來,於是在防火牆上過濾掉了google、baidu等搜尋引擎,沒有什麼好轉的跡象。於是不用apache連線資料庫,只測試整數、浮點運算,發現速度很快。因此,開始懷疑是資料庫伺服器上mysql的問題,但從本地測試mysql,檢視連線數又一切正常。接著以為是兩臺伺服器間網路連線的問題,先是修改兩臺機器上防火牆的設定,無效。開始從網上搜索,發現有人提到“ DNS的反向解諧。在my.cnf中設定:skip-name-resolve就OK了。發現這種連線慢的問題一般都是服務程式設定了DNS反向解析造成的。sshd,ftpd都是如此。教訓。 ” 
於是想起來10.11為了設定view,將主dns由windows更換為linux,沒有設定後臺伺服器的反向解析,於是趕緊設上,至此,問題解決。好多問題都是環環相扣的阿。
注:修改後不能使用localhost進行連線。如果要本地連線的話使用127.0.0.1
如:mysql -h 127.0.0.1 -uroot -p
jsp連線的話:http://127.0.0.1:3306/......省
同時修改資料庫使用者表對應的host為127.0.0.1 


Redhat 的server ssh到Ubuntu Server的時候速度很慢,要等大約5秒才提示輸入密碼
解決辦法
修改
I used a rather quick, easy solution - add "UseDNS no" to the end of /etc/ssh/sshd_config. This blocks reverse DNS lookups entirely.

轉載3:團隊開發為了方便需要統一mysql,區域網內用專門的電腦作為mysql伺服器。

mysql預設是不允許遠端連線的,因為有很大的安全隱患。。所以我們需要手動開啟。

ubuntu下mysql -u root -p 輸入密碼進入mysql控制檯

建立遠端登陸使用者並授權

<!--more-->

grant all PRIVILEGES on dbname.table to user@ipaddress′ identified by ‘password′;

最簡單的  GRANT ALL PRIVILEGES ON *.* TO root@"%"IDENTIFIED BY 'password' WITH                                     GRANT OPTION;

逐一分析所有的引數:

all PRIVILEGES 表示賦予所有的許可權給指定使用者,這裡也可以替換為賦予某一具體的許可權,例如:select,insert,update,delete,create,drop 等,具體許可權間用“,”半形逗號分隔。

dbname.* 表示上面的許可權是針對於哪個表的,dbname指的是資料庫,後面的 * 表示對於所有的表,由此可以推理出:對於全部資料庫的全部表授權為“*.*”,對於某一資料庫的全部表授權為“資料庫名.*”,對於某一資料庫的某一表授權為“資料庫名.表名”。

user表示你要給哪個使用者授權,這個使用者可以是存在的使用者,也可以是不存在的使用者。

ipaddress表示允許遠端連線的 IP 地址,如果想不限制連結的 IP 則設定為“%”即可。

 password為使用者的密碼。

執行完畢記得重啟apache

sudo /etc/init.d/apache2 restart

遠端訪問的問題解決了,但是發現在區域網使用速度都會很慢,這個按理說不應該。

最終google到了解決辦法

MySQL在處理新的執行緒連線請求時,會嘗試進行DNS解析,如果在host cache和Hosts裡找不到,處理起來就會很慢,因此最直接簡便的方法就是禁用該反向解析功能,可以通過修改MySQL的配置檔案實現,Linux下是my.cnf檔案,windows下是my.ini檔案,在配置檔案[mysqld]下新增如下一行程式碼:

skip-name-resolve

然後重啟MySQL服務,再次連線發現已是秒連了。這個方案的不足之處就是,以後在使用grant對使用者進行授權時只能使用IP格式,而不能使用主機名稱了。

通過修改系統hosts檔案也可以實現,舉例來說,我想解決192.168.1.100遠端連線MySQL伺服器緩慢的問題,只需要在MySQL庫所在伺服器的hosts檔案中新增一條記錄如下:

192.168.1.100 test.com

儲存退出,再次遠端連線該MySQL庫,同樣很快。之所以說絕,是因為這樣設定,你新增記錄的192.168.1.100遠端連線速度變快了,其他主機連線速度跟之前一樣慢。該方法同樣可以解決ssh遠端連線某主機響應很慢的問題,原理一樣。