2

我有将记录从一个数据库复制到另一个数据库的代码。

以下代码适用于我的本地测试服务器(WAMP),但当我在实时服务器(1&1)上运行时,会出现错误“错误:SELECT command denied to user 'dbo123456'@'localhost' for table 'names'”

$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());
}

我以前从未使用过多个数据库,也无法弄清楚可能出了什么问题。这只是 1&1 的事情还是我做错了?

4

1 回答 1

1

在 MySQL 中,您不仅可以为用户帐户(即用户名)分配权限,还可以为他们连接的 IP 分配权限。因此,用户可以拥有 SELECT 权限,但不能来自 127.0.0.1 以外的机器

有关授予远程访问权限的示例,请参阅此 S/O 帖子:如何为用户授予对 mysql 服务器的远程访问权限?

也就是说,请注意:您要非常注意允许远程访问,并应将其锁定为一组选定的白名单 IP。我不知道您正在构建什么类型的应用程序或解决方案,但允许通过 Internet 远程访问 MySQL 通常是个坏主意。

于 2013-05-09T14:45:01.860 回答