访问远程数据库在 Laravel 上出错

Accessing a remote database is giving an error on Laravel

我正在尝试访问我的 Laravel 应用程序上的数据库(存在于不同的服务器上)。我不断收到以下错误:SQLSTATE[HY000] [2002] Permission denied

我的.env文件设置如下(为了保护隐私做了一点改动):

DB_CONNECTION=mysql
DB_HOST= IP_ADDRESS
DB_PORT=3306
DB_DATABASE=DB_NAME
DB_USERNAME="laravel_user"
DB_PASSWORD="password"

我不确定这是否重要,但如果我转到 link IP,我可以访问 Web 服务器的数据库。ADDRESS/phpmyadmin

我的web.php文件如下:

Route::get('/test', function(){
    return DB::select("select * from umts_list");
});

此外,我还访问了 IP_ADDRESS/phpmyadmin(我的数据库所在的位置)并添加了一个名为 laravel_user 的新用户,该用户能够 SELECT 所有数据并将其保存为'password' 作为其密码。

我的尝试:我尝试了上面提到的任何方法并清除了缓存,因为我通过输入以下命令对 .env 文件进行了更改:

php artisan config: clear 
php artisan cache: clear

如有任何帮助,我们将不胜感激。谢谢。

编辑 1:在 phpMyAdmin 上,我确保添加用户,如下图所示: PhpMyAdmin User Account

另外,我也查看了phpMyadmin的端口号,是3306,如下图所示: Port Number

以防万一其他人将来偶然发现这个 post,事实证明我不必创建 SSH 隧道或将 IP 列入白名单。问题实际上出在 SELinux 上。 post 是解决方案:

具体来说,我 运行 命令:sudo setsebool -P httpd_can_network_connect_db=1

这非常有效,它实际上阻止了与远程数据库的连接。