【问题标题】:Remote MySQL not working with Laravel Config远程 MySQL 无法使用 Laravel 配置
【发布时间】:2023-03-30 00:10:01
【问题描述】:

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

我尝试清除缓存,重新安装 Laravel(安装 Composer,生成新密钥等)将 db 配置驱动器更改为 sqli,连接远程数据库仍然出错,但是当我通过查询数据库时为什么数据库可以工作修补那台机器,这太不寻常了。

【问题讨论】:

标签: php mysql laravel remote-access


【解决方案1】:

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

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

MySQL 用户权限,如果 MySQL 服务没有位于防火墙后面,那么下一个原因可能是用户只有 localhost 访问权限。

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

【讨论】:

  • 顺便说一句,我什至尝试从数据库服务器中停止 iptables,即使我可以通过其他机器连接 sql 并通过 cli 连接 webserver 机器本身而无需停止它。你认为这是 PDO 的问题吗?
  • 您的机器上也可能没有安装 pdo。您可以检查它是否从 phpinfo() 页面或 php 脚本安装 if ( extension_loaded('pdo') ) { echo "Extension PDO is loaded"; }
【解决方案2】:

Security-Enhanced Linux (SELinux) 是一个 Linux 内核安全模块,它提供了一种支持访问控制安全策略的机制,包括美国国防部式的强制访问控制 (MAC)。

httpd_can_network_connect(HTTPD 服务):: 允许 HTTPD 脚本和模块连接到网络。

以root身份运行:

# setsebool -P httpd_can_network_connect 1

【讨论】:

    【解决方案3】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-05-31
      • 1970-01-01
      • 2010-11-20
      • 2014-04-25
      • 2011-10-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多