You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel 5.6连接InfinityFree远程MySQL数据库失败求助

解决Laravel连接InfinityFree远程MySQL的2002连接超时问题

我之前帮朋友排查过类似的问题,InfinityFree免费主机的MySQL连接限制是这个报错的核心原因,咱们一步步来拆解解决:

核心原因:InfinityFree禁止外部远程连接MySQL

InfinityFree的免费主机默认不允许外部客户端(比如你本地运行的Laravel项目)直接连接他们的MySQL数据库——他们封了3306端口的外部访问权限,只允许主机内部的程序(比如部署在他们主机上的PHP脚本)或者自带的phpMyAdmin访问数据库。这就是你收到SQLSTATE[HY000] [2002]连接超时错误的最主要原因。

先验证你的配置本身是否正确(针对同服务器部署场景)

如果你打算把Laravel项目部署到InfinityFree主机上,你的database.php和.env配置是完全正确的:

database.php 配置

'mysql' => [
    'driver' => 'mysql',
    'host' => 'sql201.epizy.com',
    'database' => 'epiz_22148680_LaravelHospital',
    'username' => 'epiz_22148680',
    'password' => 'Vxp7****R1k6',
    'charset' => 'utf8',
    'collation' => 'utf8_unicode_ci',
    'prefix' => '',
],

.env 配置

DB_CONNECTION=mysql
DB_HOST=sql201.epizy.com
DB_PORT=3306
DB_DATABASE=epiz_22148680_LaravelHospital
DB_USERNAME=epiz_22148680
DB_PASSWORD=Vxp7****R1k6

你可以在InfinityFree主机上上传一个简单的PHP测试脚本,验证数据库连接是否正常:

<?php
$servername = "sql201.epizy.com";
$username = "epiz_22148680";
$password = "Vxp7****R1k6";
$dbname = "epiz_22148680_LaravelHospital";

$conn = new mysqli($servername, $username, $password, $dbname);

if ($conn->connect_error) {
    die("连接失败: " . $conn->connect_error);
}
echo "数据库连接成功!";
$conn->close();
?>

如果这个脚本在主机上运行成功,说明配置完全没问题,只是本地无法远程连接。

可行的解决方案

方案1:把Laravel项目部署到InfinityFree主机上

这是最直接的解决方式,当项目和数据库在同一服务器时,就能正常使用你现有的配置连接数据库了。你可以通过FTP把Laravel项目上传到主机,注意配置好public目录作为网站根目录,同时确保storage和bootstrap/cache目录有写入权限。

方案2:本地开发用本地数据库,部署时同步数据

如果你想在本地开发,然后部署到InfinityFree,可以:

  • 本地安装MySQL,创建和远程数据库结构一致的本地数据库,开发时连接本地库
  • 开发完成后,用phpMyAdmin导出本地数据库的结构和数据,再导入到InfinityFree的远程数据库中

方案3:尝试使用数据库隧道(不推荐免费场景)

有些第三方工具可以创建数据库隧道绕过外部连接限制,但这类工具大多需要付费,而且免费版的稳定性很差,对于免费主机来说性价比不高,所以不推荐。

内容的提问来源于stack exchange,提问作者Kasra GH

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 07:12:50