2014-04-08 172 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