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
- 你提供了3360
。 3306
是默认值,因此不需要指定。即便如此,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)[重复]