远程 MySQL 无法使用 Laravel 配置

Remote MySQL not working with Laravel Config

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

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

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

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

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

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

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

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

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

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

运行 作为 root:

# setsebool -P httpd_can_network_connect 1