MySQL数据库目标计算机主动拒绝连接


MySQL database target machine actively refuses connection

在过去的几天里,我一直在尝试在一台服务器上获得一个脚本,以连接到另一台服务器的MySQL数据库。我到处寻找解决方案,但进展甚微。我所做的是从本地数据库中读取,然后使用这些信息写入所需的数据库(该数据库有一个同名表)。代码如下。

require_once($documentRoot."/Classes/DBHandler.php");
$db_controller1 = new DBHandler();
$query = "SELECT ...";
$temp = $db_controller1->select($query);
//Convert temporary database contents into usable result
while($rowObject=mysql_fetch_object($temp)){
    $result[]=$rowObject;
}
//Create database handler to handle target database
//Server actively refuses this connection.  Wrong IP address or user?
$db_controller2 = new mysqli("ip address:3306", "user", "password", "DB name");
if($db_controller2->connect_errno){
    $errorMessage = sprintf("'%s'", $db_controller2->connect_error);
    echo $errorMessage;
}
else{
    $db_controller2->query("DELETE ...");
    //Processing of data goes here
    foreach($result as $item){
        //Create query to insert individual records
        $start = "INSERT INTO ...";
        $end = sprintf("remainder of insertion query here");
        $start .= $end;
        //Database handler uses $start to insert record
        $db_controller2->query($start);
    }
    $db_controller2->close();
}

与我交谈过的每个人都同意IP地址本身是正确的。我觉得奇怪的是,当我通过cPanel登录后查看数据库时,URL显示端口号为2082,但检查数据库变量会显示端口号3306。所有的SQL查询都是正确的,PHP代码也没有任何问题。我收到的错误因我使用的端口号而异。对于3306:

Warning: mysqli::mysqli(): (HY000/2002): No connection could be made because the target machine actively refused it. in C:'etc.'script.php on line 30
'No connection could be made because the target machine actively refused it. '

当我使用2082时,我会收到一条不同的错误消息:

Warning: mysqli::mysqli(): MySQL server has gone away in C:'etc.'script.php on line 28
Warning: mysqli::mysqli(): Error while reading greeting packet. PID=[PID here] in C:'etc.'script.php on line 28
Warning: mysqli::mysqli(): (HY000/2006): MySQL server has gone away in C:'etc.'script.php on line 28

我完全不知道该怎么办。我所看到的大多数情况似乎表明这是一个与服务器相关的问题,我需要创建一个具有远程访问权限的新用户,或者修改现有用户以允许远程访问,但无论出于何种原因,我都不能做这两件事,因为远程访问没有选项。

有人有什么建议吗?对于同一服务器上的任何文件来说,连接到目标数据库都没有问题。

注意:"X行"消息是不正确的,因为出于保密原因,我稍微修改了我在这里发布的内容。然而,他们指的是我创建新mysqli对象的那一行。

在运行目标MySQL实例的机器上。。。。

你的my.cnf文件里有什么?

可能在这里:

# vi /etc/my.cnf

确保跳过网络评论:

# skip-networking

确保绑定地址绑定到正确的IP地址:

bind-address 65.55.55.2

最后,检查一下你的防火墙。