繁体   English   中英

PHP 警告:mysqli_connect(): (HY000/2002): 连接被拒绝

[英]PHP Warning: mysqli_connect(): (HY000/2002): Connection refused

我正在使用 PHP 5.5 和 MAMP(从这里下载):

我有一个这样的基本脚本:

<?php
$servername = "127.0.0.1";
$username = "root";
$password = "root";

// Create connection
$conn = mysqli_connect($servername, $username, $password);

// Check connection
if (!$conn) {
    die("Connection failed: " . mysqli_connect_error());
}
echo "Connected successfully";
?>

当我运行这个脚本时,我得到了这个错误:

PHP Warning:  mysqli_connect(): (HY000/2002): Connection refused in /Applications/MAMP/htdocs/test/test.php on line 7

我需要在 MAMP 或 PHP 中设置一些配置问题吗?

如果其他人遇到此问题,则 MAMP 上 mysql 的默认端口是8889 ,但 php 期望用于 mysql 的端口是3306 所以你需要打开 MAMP,进入首选项,将 MAMP mysql 端口更改为3306 ,然后重启 mysql 服务器 现在连接应该成功了,host=localhost, user=root, pass=root。

有时您需要像这样在服务器中包含 mysql db port id。

$serverName = "127.0.0.1:3307";

为了让我再次工作,我只是删除了文件

ib_logfile0

ib_logfile1

.

从 :

/Applications/MAMP/db/mysql56/ib_logfile0 

Mac 10.13.3
MAMP:版本 4.3 (853)

您必须将 mamp Mysql 数据库端口更改为 8889。

就我而言,我使用的是 XAMPP,并且有一个日志告诉我错误。 要找到它,请转到 XAMPP 控制面板,然后单击 MySQL 的“配置”,然后单击“打开日志”。

日志的最新数据位于底部,日志按日期、时间、一些数字和括号中的文本进行组织,括号中可能会显示“注意”或“错误”。 一个说“错误”的人可能会导致问题。

对我来说,我的错误是导致问题的表空间,所以我删除了给定位置的数据库文件。

注意:用于安装 XAMPP 的表空间文件可能位于不同的位置,但对我来说它们位于/opt/lampp/var/mysql中。 我认为这是 XAMPP 在基于 Debian 的发行版上的典型特征。 此外,我关于在控制面板中单击什么以查看日志的说明对您来说可能有点不同,因为我在基于 Ubuntu 的 Linux 发行版(Feren OS)上运行 XAMPP。

WAMP中,右键单击 WAMP 托盘图标,然后将端口从 3308 更改为3306 ,如下所示:

在此处输入图像描述

MySQL 运行良好,直到我更新到 macOS Big Sur。 在我更新到最新版本的 macOS 后,MySQL 没有按预期工作。

我在 MySQL 配置文件中添加了一个端口(我使用的是 AMPPS,但没关系,找到你的 MySQL 配置文件),它开始工作了。

/Applications/Ampps/phpMyAdmin/config.inc.php

$cfg['Servers'][$i]['port'] = '';

$cfg['Servers'][$i]['port'] = '3306';

如果您使用 docker,您可能会发现它很有用

我连接了 mysql 容器两个独立的网络:

  1. 在 nodejs 应用程序网络中工作正常

  2. 但是在phpproject网络中我有这个错误

所以我通过 PowherShell 中的这个命令从 phpproject 网络进行了检查:

泊坞窗网络检查 phpproject

并使用 mysql 容器中的 IPv4Address 而不是 localhost 或 127.0.0.1 地址,如下所示:

$servername = "p:172.22.0.3:3306";
$username = "root";
$password = "secret";

$conn = mysqli_connect($servername, $username, $password,'database_name');

在此处输入图像描述 并解决了问题。

我希望对你有所帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM