将数据库放在一台主机上,将 PHP 文件放在另一台主机上

Placing database on one host and PHP files on another

我正在尝试弄清楚 if 以及如何在一台主机(即 Hostgator)和 [=21] 上 运行 PHP 文件=] 单独主机上的数据库(即:Godaddy)。

我为两者制定了 cPanel Linux 计划,并希望将此作为一项隐私和安全措施,因此没有一个主机拥有我的所有数据。我目前无法 运行 我自己的服务器,所以请不要建议。

这可能吗?

是的。当您在 PHP 中为数据库设置连接字符串时,它通常包含称为 hostname 的内容,这就是您连接到远程数据库的方式。这是非常标准的行业惯例(我对此有一些经验),尽管它更多地与性能有关,然后与安全性有关。

有可能。当你建立数据库连接时,你需要告诉PHP 数据库在哪里。这默认为 "this machine",但您可以为其提供 IP,它会连接到那里。

目标被提供给您正在使用的 connect 函数的构造函数。

如果您使用的是现有软件,那么这是否可行取决于相关软件,但大多数都会支持它。

简而言之:

Is it possible? Yes

Is it efficient? No

在这种情况下不可以,因为您将服务器彼此远离。当应用程序服务器和数据库服务器在同一网络上或彼此靠近以获得更好的性能和安全性时,这实际上很好。现在您实际上可以打开数据库以查找漏洞以及性能和安全性方面的一千个其他问题。

,可以想象 运行 您在托管服务提供商 A 的网络服务器和您在托管服务提供商 B 的 MySQL 实例。

当你开始工作时, 你的 MySQL 查询将通过两个提供商之间的 public 网络传输,很可能是未加密的。一个典型的 CMS 网络应用程序(Joomla!、WordPress 等)至少进行十次 MySQL 查询来获取呈现每个页面的信息。所以你会有一堆长距离查询往返,延迟会受到影响。

现在可能有问题的两个提供商之间有一条高速专用路由,但我觉得这不太可能。

为什么不加密? 对于典型的共享主机提供商而言,为了盈利,在每台服务器上放置尽可能多的客户非常重要。处理来自客户端的加密连接所需的传输层安全代码增加了服务器开销。它还需要服务器加密证书管理。您可以使用此命令判断您的 MySQL 是否支持加密连接。

 SHOW VARIABLES LIKE 'have_ssl';

我使用的两个供应商都回复 "DISABLED" 这个查询。

要使其正常工作,您将不得不说服提供商 B 将提供商 A 的 IP 地址范围内的连接列入白名单(授权)MySQL。一些提供商允许您将个人计算机的连接列入白名单 MySQL,而其他提供商则不允许。此白名单是一项有风险的业务:您与供应商 B 的其他客户共享 MySQL 服务器。当外部地址被列入白名单时,所有这些共享客户都有遭受低级拒绝服务攻击的风险。

因此,请询问提供商 B 的支持人员,他们是否会将提供商 A 列入 MySQL 连接的白名单。如果他们说这样做违反了他们的安全政策,请不要感到惊讶。