从我的应用程序连接到远程 mysql 服务器。问题是Mysql服务器在局域网上

Posted

技术标签:

【中文标题】从我的应用程序连接到远程 mysql 服务器。问题是Mysql服务器在局域网上【英文标题】:Connect to remote mysql server from my application. Problem is that Mysql server is on LAN 【发布时间】:2011-05-08 17:43:33 【问题描述】:

我有一台运行 apache+mysql 的远程服务器,并且我在我的家用计算机上开发了一个应用程序来管理我的数据库。我的家用电脑上的应用程序连接到我的远程服务器,我正在从我的家用电脑管理我的数据库(正如我所说的 mysql 在同一台远程机器上运行)。

接下来的几天,由于交通繁忙,我将使用第二台远程服务器作为数据库服务器。我的第一个远程服务器将只处理 apache,而新的远程服务器将只处理 mysql-database。

新的mysql远程服务器将与局域网中的旧服务器连接。所以我在 apache 服务器中的网站可以像“192.168.x.x”这样的数据库进行通信(你明白了)。

问题是:我的家庭应用程序将如何与数据库服务器通信????数据库服务器将与我的网络服务器一起在局域网中,只有网络服务器才能“看到”数据库服务器,如“192.168.x.x”。我的家庭应用程序如何才能“看到”局域网中“隐藏”的数据库服务器?

我是一位经验丰富的程序员,但对网络几乎没有经验,请原谅我在描述中写的任何可能的废话,我希望你明白我的意思,如果你能给我一些帮助或指出我的任何问题,我会很高兴有用的文章-操作方法。

谢谢你们!

【问题讨论】:

这对于 serverfault.com 来说可能是一个更好的问题 管理员可以将这个移到 serverfault 还是我应该重新发布这个? 你需要一个公共 ip 为你的数据库服务器,就像你的旧服务器一样。或者你可以ssh 进入你的旧服务器,从那里ssh 192.168.x.x 这是你的数据库服务器私有IP 【参考方案1】:

我使用的一个应用程序利用 ssh 隧道来完成此操作。抱歉,这远不是一个完整的答案,但也许它会让你朝着正确的方向前进:)

【讨论】:

【参考方案2】:

网络是如何配置的?

[home pc] -> internet -> [firewall] -> [webserver] -> [database]

[home pc] -> internet -> [firewall] ->  [webserver]
                                      |       |
                                      `-> [database]

如果数据库服务器是唯一运行 MySQL 的机器,您应该能够配置防火墙和/或网络服务器以转发 MySQL 端口(默认为 3306),以便与外界一样远担心的是,即使您实际上是通过防火墙/网络服务器路由数据包,也可以直接访问 DB 服务器。

【讨论】:

配置将是 [home pc]-> internet -> [webserver+firewall] -LAN-> [database server] Web 服务器将使用第二个 NIC 与数据库服务器通信。所以,如果我理解正确,我将不得不设置我的服务器进行端口转发。我的应用程序现在使用 ip 和标准端口连接到我唯一的网络数据库服务器。如果我理解正确,我的应用程序的连接详细信息在我设置数据库服务器后不必更改。 当新的数据库服务器准备就绪时,唯一必须做的改变是设置从我的 Web 服务器到数据库服务器的端口转发(只有他可以通过 LAN 看到)。这是正确的还是我错过了什么?请确认,因为我没有很多硬件经验,我感觉有点失落!当然,非常感谢您的帮助!!!我真的需要它! :) 是的,将网络服务器配置为将 3306 端口转发到数据库服务器。完成后,您的家用 PC 将连接到相同的 IP/端口,但数据包将透明地转发到数据库服务器,而不是停留在 Web 服务器上。 感谢您的帮助,Marc,您为我指明了正确的方向,我将研究更多细节并进行必要的配置...只有在绝对必要的情况下,我才会发布另一个问题希望我能成功:)再次感谢您!

以上是关于从我的应用程序连接到远程 mysql 服务器。问题是Mysql服务器在局域网上的主要内容,如果未能解决你的问题,请参考以下文章

远程 Spring 启动应用程序仍然连接到我的本地 mysql

无法从 Windows 和 Linux (CentOS7) 连接到我的远程 MySQL 服务器

从远程服务器连接到 Amazon EC2 上的 mysql

如何从 Android 应用程序通过 JDBC 连接到远程 MySQL 服务器

远程调试:无法连接到远程虚拟机。连接超时

无法从 Express 连接到远程 Redis