mysqli_connect(): (HY000/2002): 无法建立连接,因为目标机器主动拒绝
mysqli_connect(): (HY000/2002): No connection could be made because the target machine actively refused it
我知道有很多这样的问题,但我没有找到任何解决方案。
我尝试过的事情:-
已检查防火墙
重新启动了我的 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。
如果您使用的是 daefault,则不需要写数据库端口号(3306 在 MySQL 的情况下)
在您的 PHP 代码中您设置了错误的端口,这就是代码应该是的
<?php
$dbhost = 'localhost';
$dbuser = 'root';
$dbpass = '';
$db = 'test_db13';
您的代码中的端口设置为 3360
,而它应该是 3306
,但由于这是默认端口,您无需指定。
如果您查看 XAMPP 控制面板,它清楚地表明 MySQL 服务器的端口是 3306
- 您提供了 3360
。 3306
是默认值,因此不需要指定。即便如此,mysqli_connect()
的第5个参数是端口,也就是应该指定的地方。
您可以完全删除端口规范,因为您使用的是默认端口,使其成为
$dbhost = 'localhost';
$dbuser = 'root';
$dbpass = '';
$db = 'test_db13';
参考资料
大多数情况下是数据日志问题。按照步骤进行。
i) 转到 mysql 的数据文件夹。
对于 xampp,转到 C:\xampp\mysql\data。
ii) 查找像 ib_logfile0 和 ib_logfile1 这样的日志文件名。
iii) 创建备份并删除这些文件。
iv) 重新启动 apache 和 mysql。
对于那些来这里寻找答案并且没有输入错误的 3306 的人...如果像我一样,您已经浪费了几个小时来寻找这个答案而没有运气,那么这可能会有所帮助。
如果您看到这个:
(HY000/2002): 目标机器主动拒绝,无法连接
那么我的理解是它无法连接以下其中一项。现在哪个..
1) 您的 wamp、mamp 等图标是绿色的吗?无论哪种方式,右键单击该图标 --> 单击工具 --> 测试用于 Apache(通常为 80)和 Mariadb(3307?)的端口。两者都应该说 'It is correct'。
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 并祈祷吧!
我终于找到了解决办法。我浪费了几个小时试图弄清楚这个问题是什么。我尝试删除上面建议的所有这些文件,但它对我不起作用,我尝试为 myslqd.exe 添加新的入站规则到防火墙,但它不起作用。导致此错误的原因是 MySQL 端口配置错误,修复非常简单。如果您正在使用 Wamp 或 Xampp 转到 Main Folder/Bin/mysql/mysql/ 并找到一个名为 的文件my.ini
打开my.ini文件按CTRL + F并在里面搜索PORT 和 将端口的任何值更改为 - 3306 和 保存文件 ;
之后转到任务栏底部(系统托盘)的 Wamp 图标并左键单击选择mysql选项并单击"test port 3306 used" 看看它是否给你任何错误。您还可以单击 使用除 以外的其他端口和端口 3306。
祝你好运。如果有效评论。
enter image description here
如果您使用的是非默认 MySQL 端口号,请执行以下操作:
- 停止您的 xampp/wamp/etc 会话
- 在phpMyAdmin文件夹下config.inc.php设置MySQL使用的端口号
- 例如,如果您的 MySQL 端口号是
33747
,则粘贴以下内容
$cfg['Servers'][$i]['port'] = 33747;
在下面
/* Authentication type and info */
部分。
- 重新启动 Apache 和 MySQL 服务器。
只需将端口用户mysql:3308改为3306
即可
只需右键单击 wamp-> select 工具
在 mysql:3308 使用的端口下单击“使用 3308 以外的端口
在文本端口文本框中出现:键入 3306 并保存。等到 wampserver 重新启动并变绿。
现在 运行 您的 PHP 代码,它将起作用。就是这样 - 祝你好运
我知道有很多这样的问题,但我没有找到任何解决方案。
我尝试过的事情:-
已检查防火墙
重新启动了我的 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。 如果您使用的是 daefault,则不需要写数据库端口号(3306 在 MySQL 的情况下)
在您的 PHP 代码中您设置了错误的端口,这就是代码应该是的
<?php
$dbhost = 'localhost';
$dbuser = 'root';
$dbpass = '';
$db = 'test_db13';
您的代码中的端口设置为 3360
,而它应该是 3306
,但由于这是默认端口,您无需指定。
如果您查看 XAMPP 控制面板,它清楚地表明 MySQL 服务器的端口是 3306
- 您提供了 3360
。 3306
是默认值,因此不需要指定。即便如此,mysqli_connect()
的第5个参数是端口,也就是应该指定的地方。
您可以完全删除端口规范,因为您使用的是默认端口,使其成为
$dbhost = 'localhost';
$dbuser = 'root';
$dbpass = '';
$db = 'test_db13';
参考资料
大多数情况下是数据日志问题。按照步骤进行。
i) 转到 mysql 的数据文件夹。 对于 xampp,转到 C:\xampp\mysql\data。
ii) 查找像 ib_logfile0 和 ib_logfile1 这样的日志文件名。
iii) 创建备份并删除这些文件。
iv) 重新启动 apache 和 mysql。
对于那些来这里寻找答案并且没有输入错误的 3306 的人...如果像我一样,您已经浪费了几个小时来寻找这个答案而没有运气,那么这可能会有所帮助。
如果您看到这个: (HY000/2002): 目标机器主动拒绝,无法连接
那么我的理解是它无法连接以下其中一项。现在哪个..
1) 您的 wamp、mamp 等图标是绿色的吗?无论哪种方式,右键单击该图标 --> 单击工具 --> 测试用于 Apache(通常为 80)和 Mariadb(3307?)的端口。两者都应该说 'It is correct'。
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 并祈祷吧!
我终于找到了解决办法。我浪费了几个小时试图弄清楚这个问题是什么。我尝试删除上面建议的所有这些文件,但它对我不起作用,我尝试为 myslqd.exe 添加新的入站规则到防火墙,但它不起作用。导致此错误的原因是 MySQL 端口配置错误,修复非常简单。如果您正在使用 Wamp 或 Xampp 转到 Main Folder/Bin/mysql/mysql/ 并找到一个名为 的文件my.ini
打开my.ini文件按CTRL + F并在里面搜索PORT 和 将端口的任何值更改为 - 3306 和 保存文件 ;
之后转到任务栏底部(系统托盘)的 Wamp 图标并左键单击选择mysql选项并单击"test port 3306 used" 看看它是否给你任何错误。您还可以单击 使用除 以外的其他端口和端口 3306。
祝你好运。如果有效评论。
enter image description here
如果您使用的是非默认 MySQL 端口号,请执行以下操作:
- 停止您的 xampp/wamp/etc 会话
- 在phpMyAdmin文件夹下config.inc.php设置MySQL使用的端口号
- 例如,如果您的 MySQL 端口号是
33747
,则粘贴以下内容
在下面$cfg['Servers'][$i]['port'] = 33747;
部分。/* Authentication type and info */
- 重新启动 Apache 和 MySQL 服务器。
只需将端口用户mysql:3308改为3306
即可只需右键单击 wamp-> select 工具
在 mysql:3308 使用的端口下单击“使用 3308 以外的端口
在文本端口文本框中出现:键入 3306 并保存。等到 wampserver 重新启动并变绿。
现在 运行 您的 PHP 代码,它将起作用。就是这样 - 祝你好运