使 MySQL 与非本地连接(移动数据等)一起工作

Posted

技术标签:

【中文标题】使 MySQL 与非本地连接(移动数据等)一起工作【英文标题】:Make MySQL work with non local area connection (mobile data, etc) 【发布时间】:2019-11-27 21:42:32 【问题描述】:

有没有一种方法可以让带有 XAMPP 的 mysql 上线以通过 Mobile Data(android 应用)或 PC 应用连接,而无需在同一本地连接上进行蜜蜂连接?

这是运行 XAMPP 的 PC 的规格:

16GB 内存 i7-8700 SSD - 512GB 集成 GPU 100MB 互联网连接(光纤)

我要做的是连接到数据库,而不是在与执行 XAMPP 的 PC 相同的连接上,就像在加利福尼亚打开 Android 应用程序同时 PC 在下加利福尼亚州

【问题讨论】:

How to allow remote connection to mysql的可能重复 关注 ***.com/questions/14779104/… 并记住相应地转发您的 MySQL 端口(默认为 3306)。 但是: 我会考虑这种不好的做法(即使您仅将某些 DB 用户限制到某些 DB 等),因为您必须跟踪 MySQL 漏洞。我建议让您的移动应用程序与某种“后端”通信,然后访问数据库。虽然后端对用户(和潜在的攻击者)可见,但数据库不会。 【参考方案1】:

问题在于您的 PC 很可能位于路由器后面。路由器将多个私有 IP 地址映射到一个公共 IP 地址。它是如何做到的?它使用NAT。用非常基本的术语来说,当设备 D1(比如私有 IP 192.168.1.10)位于路由器后面并想要与公共设备 D2 通信时,它会发送一个请求。请求转到路由器。路由器将公共 IP 地址和任意端口(例如 12345)添加到数据包中。路由器保留一个表,其中包含与私有设备链接的所有端口(例如 192.168.1.10 -> 12345,...)。然后它使用 D2 的公共 IP 地址将数据包发送到 D2。 D2 将响应发送回路由器公共 IP。路由器使用端口号和表将数据包转发到私有设备,在这种情况下,设备是 D1。

因此,您无法从路由器外部直接与位于路由器后面的设备进行通信。但是,您可以使用port forwarding。您可以告诉路由器始终将特定端口映射到特定专用 IP(您的 PC 的 IP)。然后,您让其他设备(您的 Android 应用程序)使用该端口与其通信。

总而言之,如果我们有两个设备,A 和 B,并且 A 在路由器后面。如果 A 想与 B 发起连接,那么:

如果 B 在同一个路由器后面,那么他们可以使用他们的私有 IP 地址。

如果 B 不在任何路由器后面,则 A 可以使用 B 的公共 IP 地址与其通信,如上所示。

如果 B 在不同的路由器后面,那么一定有某种port forwarding。

【讨论】:

以上是关于使 MySQL 与非本地连接(移动数据等)一起工作的主要内容,如果未能解决你的问题,请参考以下文章

如何使 SQL Server 2012 与 php 一起工作?

移动云平台OneNet之数据可视化View连接本地MySQL数据库

mysql介绍(关系型数据库),关系型与非关系型数据库,数据库与文件的对应关系,mysql启动与连接,修改mysql配置信息

如何使 mysql 访问公开,而不仅限于本地主机?

从本地 MySQL 工作台连接 Cloud SQL MySQL - 连接成功但无法连接数据库服务器

无法建立从工作台到 nodejs 的本地 mysql 连接