代码之家  ›  专栏  ›  技术社区  ›  DedenB

远程MySQL无法使用Laravel配置

  •  1
  • DedenB  · 技术社区  · 7 年前

    我们的数据库服务器已授予用户root对所有本地ip的访问权限,并且可以在所有本地ip中通过cli进行访问。但在我们的Web服务器(不同的机器)中,Laravel仍然无法连接到数据库,错误如下:

    Error PHP

    我曾尝试清除缓存,重新安装Laravel(安装composer,生成新密钥等)将db config drive更改为sqli,连接远程db时仍然会出错,但为什么我在那台机器上通过tinker查询db时db会工作,这太不寻常了。

    3 回复  |  直到 7 年前
        1
  •  3
  •   AlexR1712    7 年前

    如果您的MySQL数据库位于远程服务器上,则很可能存在以下问题之一:

    防火墙块 ,具有MySQL服务的服务器可能位于防火墙后面,防火墙设置为阻止外部访问MySQL操作的端口。

    MySQL用户权限 ,如果MySQL服务不位于防火墙后面,则下一个原因可能是用户只有本地主机访问权限。

    您应该尝试登录到您的远程服务器,然后从那里通过一些shell命令连接到您的数据库,以验证您确实可以。

        2
  •  0
  •   Suraj    7 年前

    安全增强型Linux(SELinux) 是一个Linux内核安全模块,提供支持访问控制安全策略的机制,包括美国国防部风格的强制访问控制(MAC)。

    httpd\u can\u network\u connect(httpd服务) ::允许HTTPD脚本和模块连接到网络。

    以根用户身份运行:

    # setsebool -P httpd_can_network_connect 1
    
        3
  •  0
  •   DedenB    7 年前

    解决了的: php can't connect to mysql with error 13 (but command line can)

    现在,Laravel可以通过执行以下操作连接DB: setsebool httpd_can_network_connect=1 在数据库服务器中。但我还是不明白为什么。有什么合理的解释吗?