从一台服务器连接到另一个数据库

时间:2011-01-28 15:17:56

标签: php mysql server-side-includes cross-database

好的,所以我有一个客户端试图将他的网站的一半移动到另一台服务器......在这里我仍然需要从两个数据库中提取数据。所以我有新的网站,我需要在旧网站上做一个mysql数据库查询,所以我可以包括旧的导航....但是当我做

  <?php include("http://www.othersite.com/includes/db.php"); ?>
  <?php include("http://www.othersite.com/includes/nav.php"); ?>

我得到了

Warning: mysql_query(): Access denied for user 'www-data'@'localhost'
(using password: NO) in /vol/www/othersite.com/public_html/includes/nav.php
on line 223 Warning: 

如何从新站点访问另一个数据库,并且不允许它干扰新的数据库连接

4 个答案:

答案 0 :(得分:1)

你可以使用:

$newLink = mysql_connect($host, $user, $password);
mysql_select_db($db, $newLink);

并且您应该将$ newLink添加到您的查询中,以便它不会使用“旧”数据库链接连接,例如:

mysql_query('SELECT * FROM USERS', $newLink);

希望有所帮助

P.S。如果你把代码放在 db.php nav.php

中会更容易

答案 1 :(得分:0)

您需要向我们展示用于连接这些数据库的实际代码(密码被清空)。但即使没有它,我也可以告诉你远程服务器不是localhost

您似乎从远程站点包含这些文件。它不会以这种方式工作,因为代码仍在本地服务器上执行。

您还必须确保远程MySQL允许远程连接,并且创建了具有适当权限的MySQL用户帐户。

请参阅:http://dev.mysql.com/doc/refman/5.5/en/privilege-system.html

答案 2 :(得分:0)

  

...在此我还需要提取数据   来自两个数据库。

祝你好运!

我会这样做:

  1. 将代码复制到服务器#2
  2. 调整它以从服务器#1
  3. 获取数据
  4. 将DNS记录从服务器#1的ip更改为服务器#2的ip
  5. 等一天
  6. 在服务器#1
  7. 上阻止“服务器维护”5分钟
  8. rsync db从服务器#2到#1 /调整服务器#2以从其自身获取数据
  9. 删除'服务器维护'
  10. 在ebay上销售服务器#1并获得嘘声
  11. 注意: 当然,如果你正在谈论一些私人主机..在不使服务器脱机的情况下,有更成功但更复杂的机制可以做同样的事情。

答案 3 :(得分:0)

在浏览器中加载http://www.othersite.com/includes/db.php。您会注意到您无法看到PHP代码:您获得的是PHP代码的输出。这意味着,将所有ìnclude构造更改为指向远程HTTP服务器只会破坏您的网站,因为您将无法再访问源代码。

现在,回答您的问题,如果您想要连接到远程数据库,您必须找到您拥有数据库密码的任何地方并使用新的服务器地址localhost更改数据:www-data您的新用户等。但是,您可能需要配置远程MySQL服务器,以便它接受来自新服务器IP地址的外部连接。