2014-04-08 207 views
0

下午好,從遠程計算機

我想給在客戶端的服務器(Windows Server 2012)的公共訪問MySQL數據庫的設置,讓我的應用程序可以在白天發送一些信息訪問MYSQL 。該應用程序將位於我的國家附近,因此本地連接無法實現。我遵循很多用戶發佈的這個問題的許多解決方案,但沒有任何解決方案,但如果您覺得已經提出並回答了問題,我表示歉意。

對於初學者來說,數據庫正在使用3306默認端口,在線端口掃描程序檢測到端口是開放的(我聯繫了我的ISP以便它們可以打開端口)。

我編輯了mysql配置文件「my.ini」來評論綁定地址值,以便它監聽它連接到的任何ips(localhost.lan和public ip)。 我可以使用127.0.0.1,10.0.0.129(本地局域網)上的mysql.exe連接到數據庫,但是當我嘗試使用公共IP地址或我的主機名(dyndns.org域名解析爲我的公共IP地址)我得到以下錯誤:

ERROR 2003 (HY000): Can't connect to MySQL server on 'xxx.xxx.xxx.xxx' (10061)

我的問題是: 可這是一個防火牆的問題,即使我的口檢出開放?即使打開端口,它仍然可能是端口轉發問題,對嗎?我應該讓我的ISP端口轉發3306端口上的所有請求以發送到特定的機器嗎?

+0

你的服務器是什麼? 'APACHE'或'IIS'? – underscore

+0

如果有,請在my.cnf中註釋'skip-networking' –

+0

另外,您需要確保數據庫'GRANT'允許外部用戶連接請參閱[GRANT'文檔以獲取詳細信息](http:/ /dev.mysql.com/doc/refman/5.1/en/grant.html) –

回答

0

事實證明,其他線程上的所有建議都是正確的。爲了讓您的MySQL服務器可以從公共機器訪問,您需要刪除MySQL配置文件(my.ini)中的綁定地址行。服務器應該開始監聽任何可用的網絡。 然後,您需要創建一個具有適當權限的用戶來遠程訪問您的數據庫。採用這種方法https://stackoverflow.com/a/8454003/1338401

引起我問題的部分是防火牆/路由器配置。您需要打開服務器正在監聽的門並將其前往您的服務器機器。在我的情況下,我無法訪問路由器,所以我必須聯繫我的ISP並指示他們打開端口並將其轉發。

許多人指出MySQL使用未加密的tcp/ip連接進行連接,並且由於安全原因,不應使用此解決方案。

0

訪問數據庫的最佳方式是使用ssh隧道。 大部分的數據庫客戶端允許你這樣做(例如,如果你的操作系統是windows,MySQL Workbench)。

這個想法是通過遠程服務器上的ssh進行連接,然後用localhost ip打開一個mysql連接。

在谷歌搜索「數據庫ssh隧道」或「mysql ssh隧道」。

+0

這不需要完全重寫我的應用程序,它目前使用Connector/J連接到MySQL服務器? –

+0

關於mysql安全性,請看文檔:http://dev.mysql.com/doc/refman/5.0/en/security-guidelines.html – ArGh

+0

您可以簡單地開發一個安全的CRUD webservice(取決於您的需要,您只能開發讀取部分)在MySQL服務器上。 – ArGh