【问题标题】:mysqli_connect(): (HY000/2002): No connection could be made because the target machine actively refused itmysqli_connect(): (HY000/2002): 无法连接,因为目标机器主动拒绝
【发布时间】:2021-11-26 15:11:33
【问题描述】:

我知道有很多这样的问题,但我没有找到任何解决方案。

我尝试过的事情:-

  • 检查防火墙

  • 重新启动了我的 PC 和 Apache 服务器

  • 重启MYSQL

  • 检查了我的代码

  • 尝试了我在互联网上所知道和找到的一切

这是我的代码:-

<?php

$dbhost = 'localhost:3360';
$dbuser = 'root';
$dbpass = '';
$db     = 'test_db13';


$conn  = mysqli_connect($dbhost,$dbuser,'',$db);

if(! $conn){
  die('Could not connect connect: ') ;
}

echo 'Successfully Connected';


$sql = 'Connected Successfully';
  $retvalue = mysqli_query($sql);

  if(! $retvalue){
    die('Cannot connect to SQL: ');
  }

echo 'DataBase test_db13 has successfully created';

mysqli_close($conn);

 ?>

我确实设置了密码,但它仍然显示错误。

这是防火墙图片:-

XAMMP 终于运行了,这就是证明

【问题讨论】:

  • 查看控制面板中给出的端口,以及您用来连接的端口。 3360 != 3306
  • 在你的 PHP 中,端口是 3360,而 xampp 建议它是 3306

标签: php mysqli xampp


【解决方案1】:

您输入了错误的端口号 3360 而不是 3306。 如果你使用默认的,你不需要写数据库端口号(3306在MySQL的情况下)

【讨论】:

    【解决方案2】:

    在您的 PHP 代码中,您设置了错误的端口,代码应该是这样的

    <?php
    
    $dbhost = 'localhost';
    $dbuser = 'root';
    $dbpass = '';
    $db     = 'test_db13';
    

    您的代码中的端口设置为3360,而应该是3306,但由于这是默认端口,您无需指定。

    【讨论】:

      【解决方案3】:

      如果你查看你的 XAMPP 控制面板,它清楚地表明 MySQL 服务器的端口是3306 - 你提供了33603306 是默认值,因此不需要指定。即便如此,mysqli_connect() 的第 5 个参数是端口,也就是应该指定的地​​方。

      您可以完全删除端口规范,因为您使用的是默认端口,使其成为

      $dbhost = 'localhost';
      $dbuser = 'root';
      $dbpass = '';
      $db     = 'test_db13';
      

      参考文献

      【讨论】:

      • 这看起来和我的回答很相似
      • 不过,在发布任何答案之前,我已经在 cmets 中指出了这一点;-) 它们看起来相似的唯一原因是因为这是解决他的问题的最简单方法!伟大的思想都一样,嗯?
      • 谢谢。这正是我的问题。总有一天我会明白为什么 3306 是一个如此敏感的端口号。
      【解决方案4】:

      在大多数情况下,这是数据日志问题。按照步骤操作。

      i) 转到 mysql 的数据文件夹。 对于 xampp,请转到 C:\xampp\mysql\data。

      ii) 查找日志文件名,例如 ib_logfile0 和 ib_logfile1。

      iii) 创建备份并删除这些文件。

      iv) 重启 apache 和 mysql。

      【讨论】:

        【解决方案5】:

        对于那些来这里寻找答案并且没有输入 3306 错误的人......如果像我一样,你已经浪费了几个小时而没有运气来寻找这个答案,那么这可能会有所帮助。

        如果你看到这个: (HY000/2002): 由于目标机器主动拒绝,无法建立连接

        那么我的理解是它无法连接以下之一。现在哪个..

        1) 你的 wamp、mamp 等图标是绿色的吗?无论哪种方式,右键单击图标 --> 单击工具 --> 测试用于 Apache(通常为 80)和 Mariadb(3307?)的端口。两者都应该说“它是正确的”。

        2) 错误来自 .php 文件。因此,请检查您的 dbconnect.php。

        <?php
        $servername = "localhost";
        $username = "your_username";
        $password = "your_pw";
        $dbname = "your_dbname";
        $port = "3307";
        ?>
        

        您的设置是否正确?你的用户存在吗?他们有权利吗?端口是否与 1) 中的测试端口匹配?不必是 3307,用户可以是 root。您也可以左键单击绿色图标 --> 单击 MariaDB 并查看使用的端口,如下图所示。都好?积极的?好的!

        3) 登录 phpmyadmin 时出现错误。所以,检查你的 my.ini。

        左键单击绿色图标打开 my.ini --> 单击 MariaDB -->

        ; The following options will be passed to all MariaDB clients
        [client]
        ;password = your_password
        port = 3307
        socket = /tmp/mariadb.sock
        
        ; Here follows entries for some specific programs
        
        ; The MariaDB server
        [wampmariadb64]
        ;skip-grant-tables
        port = 3307
        socket = /tmp/mariadb.sock
        

        确保端口匹配 MariaDB 正在测试的端口。然后终于..

        [mysqld]
        port = 3307
        

        在 my.ini 的底部,确保此端口也匹配。

        4) 1-3 完成了吗?重新启动你的 WAMP 并交叉手指!

        【讨论】:

          【解决方案6】:

          我终于找到了解决办法。我浪费了几个小时试图弄清楚这个问题是什么。我尝试删除上面建议的所有这些文件,但它对我不起作用,我尝试为 myslqd.exe 添加新的入站规则到防火墙,但它不起作用。导致此错误的原因是 MySQL 端口配置错误,修复非常简单。如果您使用 Wamp 或 Xampp,请转到 Main Folder/Bin/mysql/mysql/ 并找到一个名为 my.ini

          打开 my.ini 文件按 CTRL + F 并在其中搜索 PORT将端口的任何值更改为 - 3306保存文件

          然后转到任务栏底部的 Wamp 图标(系统托盘)并左键单击选择 mysql 选项并单击“使用的测试端口 3306” 看看是否它会给你任何错误。您也可以点击使用除此之外的其他端口 此处显示的任何内容和端口 3306。

          祝你好运。如果有效,请发表评论。

          enter image description here

          【讨论】:

            【解决方案7】:

            如果您使用的是非默认 MySQL 端口号,请执行以下操作:

            1. 停止您的 xampp/wamp/etc 会话
            2. 在phpMyAdmin文件夹下的config.inc.php中设置MySQL使用的端口号。
            3. 例如,如果您的 MySQL 端口号是 33747,则粘贴以下内容
              $cfg['Servers'][$i]['port'] = 33747;
              
              在下面
              /* Authentication type and info */
              
              部分。
            4. 重新启动 Apache 和 MySQL 服务器。

            【讨论】:

            • 经过 6 小时的痛苦,这是唯一对我有用的解决方案。非常感谢!
            【解决方案8】:

            只需将端口用户通过mysql:3308改为3306即可

            只需右键单击 wamp-> 选择工具

            在 mysql:3308 使用的端口下单击“使用 3308 以外的端口

            在文本端口文本框中出现:输入 3306 并保存。等到 wampserver 重新启动并变绿。

            现在运行你的 PHP 代码,它会工作的。就是这样-祝你好运

            【讨论】:

              猜你喜欢
              • 2018-09-06
              • 2019-02-01
              • 2022-01-13
              • 2018-08-16
              • 2016-04-08
              • 2016-03-03
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多