mysqli_connect(): (HY000/2002): 主机连接超时

Posted

技术标签:

【中文标题】mysqli_connect(): (HY000/2002): 主机连接超时【英文标题】:mysqli_connect(): (HY000/2002): Connection timed out on hosting 【发布时间】:2017-06-22 11:04:45 【问题描述】:

我正在尝试使用 php 连接 mysql 数据库。但它在本地机器上运行良好,但在在线托管时却没有,错误显示为 mysqli_connect(): (HY000/2002): 连接超时

<?php

$link = mysqli_connect('sql6.freesqldatabase.com','user_name','password','database_name');
if(mysqli_connect_error())
    die("couldn't connect to database");
?>

【问题讨论】:

【参考方案1】:

您的 MySQL 服务器可能未配置为接受来自您尝试访问它的主机的请求。

检查服务器的配置。 既然您说本地计算机可以访问它,请检查您允许这样做的位置并对在线主机的 ip 执行相同操作。

【讨论】:

【参考方案2】:

就我而言,AWS 防火墙阻止了我的 Web 服务器。

将 Web 服务器 IP 地址添加到防火墙例外已修复 这是给我的。

【讨论】:

【参考方案3】:

主机中可能有防火墙阻止了对 MySQL 服务器的请求。就我而言,添加防火墙规则帮助了我。

Ubuntu

要允许一台设备访问 MySQL 服务器,

sudo ufw allow from remote_IP_address to any port 3306

要允许任何设备连接到 MySQL 服务器,

sudo ufw allow 3306

成功了!

【讨论】:

【参考方案4】:

如果您的网站和 MySQL 数据库托管在不同的服务器上,请确保您在连接字符串中提到了正确的 MySQL 主机名(可解析)。

如果您指定了正确的用户名,很可能您的 MySQL 服务器不允许来自您站点所在的 Web 服务器的远程 MySQL 连接。 请联系您的网络托管服务提供商以获取确切的 MySQL 主机名,并允许您的网络服务器 IP 地址用于远程 MySQL 连接。

【讨论】:

如果 MySQL 服务器不允许远程连接,那么我如何能够连接到本地机器上的服务器 您可以通过网站从本地计算机连接到远程 MySQL 服务器吗?如果是,则不允许您的 Web 服务器连接到 MySQL 服务器。通常,远程 MySQL 存在安全风险,不允许所有主机连接(% 参数)。首先要确保的是,Web 服务器和 MySQL 服务器可以通过 TCP IP 3306 进行通信。【参考方案5】:

我认为您必须将托管服务器的 IP 地址列入数据库服务器的白名单。

因此您的数据库服务器将接受来自您的托管服务器的请求。

【讨论】:

【参考方案6】:

同时指定连接字符串的端口(3306?)。

【讨论】:

以上是关于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): 无法连接,因为目标机器主动拒绝