【问题标题】:mysqli_connect(): (HY000/2002): Connection timed out on hostingmysqli_connect(): (HY000/2002): 主机连接超时
【发布时间】: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");
?>

【问题讨论】:

    标签: php mysql hosting


    【解决方案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?)。

            【讨论】:

              猜你喜欢
              • 2021-11-26
              • 2015-03-10
              • 2019-11-29
              • 2020-02-08
              • 1970-01-01
              • 2019-02-01
              • 2017-10-19
              相关资源
              最近更新 更多