我正在尝试连接到我的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后没有正确响应 由于连接的主机无法响应,因此一段时间或建立的连接失败。
答案 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