Laravel连接到远程mysql数据库

时间:2018-05-27 19:53:27

标签: php mysql laravel shared-hosting

我正在尝试连接到我的Laravel( Version 5.6 )应用程序中的远程mysql数据库( infinityfree.net )。这是我在 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

但是,当我尝试连接到我的数据库时,我收到此错误:

  

PDOException ::(“SQLSTATE [HY000] [2002]连接尝试失败,因为连接方在p后没有正确响应   由于连接的主机无法响应,因此一段时间或建立的连接失败。

我见过this postthis,但没有回答。

3 个答案:

答案 0 :(得分:-1)

看看php-mysql的库是不是已经安装了?

查看php -m,查看模块。

设置.env足以连接db

答案 1 :(得分:-1)

这基本上意味着在TCP连接尝试发生时没有从远程主机收到响应(正面或负面)。 可能发生这种情况的一个原因是防火墙阻止来自服务器的响应。 另一个原因是主机名不正确。 这也可能意味着服务器(或沿途的某个路由器)存在(临时)问题。您可以尝试使用traceroute来确定这是否属实。

<强>解决方案

确保主机名正确无误 在软件防火墙和防病毒产品中取消阻止SmartFTP 检查服务器是否存在暂时性问题

你应该弄清楚主机是否有真正的ip。如果ip不是静态的,那么就无法建立连接。

在此之前, 试试

php artisan config:cache

如果您正在使用docker或任何其他类似服务,请重新启动容器并再次尝试,并确保主机在这种情况下使用相同的MySQL(3306)por 。它可以很好的是一个不同的端口。

答案 2 :(得分:-1)

出于安全原因,默认情况下,禁止对MySQL数据库服务器的远程访问。 MySQL实例仅配置为侦听本地连接。这是MySQL的默认设置,但不适用于远程数据库设置,因为MySQL必须能够侦听可访问服务器的外部IP地址。

要启用此功能,请打开mysqld.cnf文件:

寻找下一行,

bind-address            = 127.0.0.1

出于故障排除的目的,将其更改为0.0.0.0。

重新启动MySQL并再次检查连接。

如果其工作方式更改为您的WEBSERVERIP地址0.0.0.0

如果有任何问题,请参阅完整的教程。

https://www.cyberciti.biz/tips/how-do-i-enable-remote-access-to-mysql-database-server.html