mysqli_connect(): (HY000/2002): 无法连接,因为目标机器主动拒绝

Posted

技术标签:

【中文标题】mysqli_connect(): (HY000/2002): 无法连接,因为目标机器主动拒绝【英文标题】:mysqli_connect(): (HY000/2002): No connection could be made because the target machine actively refused it 【发布时间】: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 【参考方案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';

参考文献

mysqli_connect() Standard connection of MySQL

【讨论】:

这看起来和我的回答很相似 不过,在发布任何答案之前,我已经在 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 端口号,请执行以下操作:

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

【讨论】:

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

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

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

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

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

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

【讨论】:

以上是关于mysqli_connect(): (HY000/2002): 无法连接,因为目标机器主动拒绝的主要内容,如果未能解决你的问题,请参考以下文章

Mysql 错误:mysqli_connect(): (HY000/2002): Connection denied

mysqli_connect(): (HY000/2002): 无法通过socket连接到本地MySQL服务器

警告:mysqli_connect(): (HY000/1049): 仅在 mac 终端中的未知数据库

警告:mysqli_connect():(HY000/1045):用户'record'@'localhost'的访问被拒绝(使用密码:YES)[重复]

警告:mysqli_connect(): (HY000/2002): 没有这样的文件或目录

mysqli_connect(): (HY000/2002): 无法连接,因为目标机器主动拒绝