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)[重复]