目标机器主动拒绝mysqli数据库连接

时间:2015-12-17 18:07:56

标签: php mysql database mysqli

我正在实施数据库表复制系统。我知道后一种MySQL技术,但我无法让它工作。我现在所拥有的基本上是初步实施。

这是我到目前为止的代码。

//This is where DBHandler is defined
$documentRoot=$_SERVER['DOCUMENT_ROOT'];
require_once($documentRoot."/Classes/DBHandler.php");

$src_controller = new DBHandler();

$query = "SELECT * FROM table";
$temp = $src_controller->select($query);

//Convert temporary database contents into usable result
while($rowObject=mysql_fetch_object($temp)){
    $result[]=$rowObject;
}

//Create database handler to handle database
$dest_controller = new mysqli("ip address", "user", "password", "database name");

if($mysqli->connect_errno){
    $errorMessage = sprintf("'%s'", $mysqli->connect_error);
    echo $errorMessage;
}
else{
    $dest_controller->query("DELETE * FROM table");

    //Processing of data goes here
    foreach($result as $item){
        //Create query to insert individual records
        $start = "INSERT INTO table(field1, field2...) VALUES (";
        $end = sprintf("'%s', %d, %d, %f, %f)", field1, field2...);
        $start .= $end;

        //Database handler uses $start to insert record
        $dest_controller->query($start);
    }

    $dest_controller->close();
}

正在读取的数据库与正在写入的数据库位于不同的服务器上。我尝试使用命令“SHOW VARIABLES WHERE Variable_name ='hostname'”检查目标数据库的主机,并找到一个只显示“抱歉,错误的页面或我们已移动”页面的网站。更重要的是,我在URL中看到的端口号与“SHOW VARIABLES WHERE Variable_name ='port'”命令给出的内容不匹配。后一个命令说3306。

我不确定该怎么做。我们使用cPanel X连接到数据库,并且有一个选项允许选择IP远程访问此数据库。我很肯定我允许访问正确的地址,但这没有成就。

这是主机的某种问题,还是我在创建mysqli对象时没有使用正确的IP地址进行连接?

1 个答案:

答案 0 :(得分:0)

如果MySQL端口在该服务器上打开?检查一下:

telnet yoursever.address.com 3306

如果telnet无法连接,则端口被阻止,您需要托管服务提供商才能将其打开。