2013-05-09 66 views
2

我有代码将一个记录从一个数据库复制到另一个。多个数据库查询不能在远程服务器上工作

下面的代码在我的本地测试服务器(WAMP)上工作,但当我在活动服务器上运行它时,出现错误“Error:SELECT command denied to user'dbo123456'@'localhost'for table'names' 1 & 1)

$con1 = mysql_connect(HOST1 , USER1 , PASS1 , "db1"); 
if (!$con1) 
{ 
    echo "Failed to connect to db1 " . mysqli_connect_error(); 
} 

$con2 = mysql_connect(HOST2 , USER2 , PASS2 , "db2"); 
if (!$con2) 
{ 
    echo "Failed to connect to db2 " . mysqli_connect_error(); 
} 

$sql = " 
INSERT INTO db2.names (title , surname) 
SELECT title , surname 
FROM db1.names 
WHERE nameID = 1 
"; 
$result = mysql_query($sql); 
if (!$result) { 
    die('Error: ' . mysql_error()); 
} 

我从来没有与muliple数据库工作之前,可以不知道是什么可能是错误的。这只是一个问题,还是我不正确地做这件事?

+1

你检查了你的用户权限吗? – 2013-05-09 14:05:28

+0

如果我自己连接到DB1,那就没问题。所以我假设它不是一个perpentions问题,因为我知道用户dbo123456具有SELECT权限 – 2013-05-09 14:35:35

+0

每个连接都可以工作,因为数据库对于1和1帐户是本地的。在1&1服务器上似乎发生的事情是,当第二次连接发生时,第一次连接失败。 – 2013-05-09 14:58:11

回答

1

在MySQL中,您不仅可以将权限分配给用户帐户(即用户名),还可以将权限分配给它们连接的IP。因此,用户可以有SELECT权限,但不能从127.0.0.1比

见该S/O后授予远程访问权限的例子其它机器:How to grant remote access permissions to mysql server for user?

这就是说,要注意:要非常注意允许远程访问,并应将其锁定到一组选定的白名单IP。我不知道你正在构建什么类型的应用程序或解决方案,但允许通过互联网远程访问MySQL通常是一个糟糕的想法。

+0

谢谢你。起初我并不认为这是问题,但似乎连接独立工作,但如果在单个查询中组合时失败。我确信这是因为数据库无法在1&1服务器上看到对方。我决定写一个替代脚本来解决我的问题,而不是开始混淆权限。 – 2013-05-10 08:38:18

相关问题