如何连接到另一台服务器上的数据库。

11

我能把我的PHP脚本放在A服务器上,并连接到B服务器上的MySQL数据库吗?

如果可以,应该如何操作呢?谢谢!

9个回答

8

很简单,以上所有技术都相当复杂。

假设您在B服务器上有数据库,在A服务器上有网站(假设其IP为192.234.12.1)。

在cpanel中将B服务器的IP列入白名单,并在数据库中创建一个具有足够权限的新用户(假设此用户为test)。

然后将此用户创建为test@192.234.12.1。


假设服务器B是我电脑上安装的数据库(通过Mysql Server安装)。服务器A(远程共享托管服务器)能否通过一个PHP脚本(简单的PDO数据库连接)访问它? - user2305415

4

可以。

访问同一服务器上的本地主机的方式相同,您需要将数据库主机更改为外部主机。这更多是一个配置问题,您需要授予您的数据库用户远程访问MySQL的权限,还需要确保防火墙允许在MySQL端口上进行连接。

以下是Debian示例:http://www.debianhelp.co.uk/remotemysql.htm


3

可以做到。

找到将上传脚本的服务器A的IP地址。请不要忘记在mysql_connect()或mysqli_connect()方法中将localhost更改为服务器B的IP地址。

现在进入存储数据库的服务器B的控制面板。

在控制面板的主页上,转到数据库部分,并单击Remote MYSQL选项。

然后添加服务器A的IP地址,单击添加主机。

现在您可以在运行在服务器A上的脚本中访问服务器B中的数据库。

请注意,获取的结果将会很慢,因为它正在从位于另一台服务器上的数据库中获取数据。

不用谢。


你好,我有同样的问题。但我的情况有点不同。在这种情况下,我想通过服务器A为服务器B获取数据库连接,但我希望将该连接对象用于Android。因为我正在处理的Android项目直接连接到服务器并执行读写操作。我知道这是一个不好的做法,但我仍然需要解决方案。Android -> 服务器A -> 服务器B - Imranul Hoque Limon

2

只需不使用另一台计算机的主机名进行连接即可。具体细节取决于您正在使用的扩展:

$mysql = mysql_connect($host, $user, $pass);
$mysqli = new mysqli($host, $user, $password, $schema);
$pdo = new PDO("mysql:host=$host", $user, $pass);

确保用户被MySQL服务器(创建用户)允许访问,并检查是否存在防火墙的限制。


0
我曾经遇到类似的问题,但是这是我解决的方法: 要从服务器A连接到服务器B,首先需要在cPanel(服务器B)中允许远程MySQL访问主机,Home-> Databases-> Remote MySQL,并在防火墙中将IP地址列入白名单(即B服务器的IP地址)。然后以下php db连接应该可以工作。
$db_connect =  mysqli_connect("serverB.com", "dbuser", "dbpassword", "dbname");
// Evaluate the connection
if (mysqli_connect_errno()) {
    echo mysqli_connect_error();
    exit();
}else{
   //successful connection
    echo "Yes, successful";
}

0

这是连接其他服务器上的另一个数据库的完美解决方案。

$dbserverName = "191.238.0.2";    
$dbUsername = "lauranco_L2L";
$dbPassword = "SL92TIW5T96L";
$dbName = "lauranco_siteBits";

0

这就是你所需要的一切。

(即使你的脚本在A服务器上,你的Web服务器在B服务器上,你的数据库在C服务器上...)


0

0

好老的帖子。

然而,在这里出现的所有答案中,没有一个涉及到安全问题。

将mysql端口开放到服务器外部是非常不安全的。

最安全的选择是在所有服务器上仅将mysql端口开放给localhost,并在第二个服务器内运行另一个php,使其创建所需的输出并将其传递给您在第一个服务器上运行的php。


我有一个共享托管服务器,我想使用我的PC上安装的Mysqlserver(例如)和来自我的服务器的php脚本从数据库中检索数据。您能否更明确地解释如何安全地完成? - user2305415
在共享托管服务器上有一个 PHP 脚本,使其将数据列传递到在您的个人计算机上运行的另一个 PHP 脚本。 - Natarajan N Napoleon
我认为所有这些都太复杂了...现在我正在尝试学习更多关于VPN,试图在我的本地PC上的数据库(Mysql Server)和一个服务器(共享托管的服务器)之间建立连接。您认为设置VPN是确保安全的好方法吗? - user2305415
很好。如果您使用 VPN,而不是完全打开 mysql 端口,那就很好。 - Natarajan N Napoleon
是的,我猜Mysql默认端口3306会被关闭。然后我只需要在远程服务器上设置VPN。从另一个服务器(我的电脑)连接它。配置Mysql服务器接受远程连接(绑定地址+用户配置)。通过将localhost更改为内部IP地址运行简单查询进行测试。希望这样清晰易懂,并且不需要配置路由器、防火墙或复杂的事情... - user2305415
你自己已经提到了所有的。 - Natarajan N Napoleon

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接