访问远程数据库在 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
这非常有效,它实际上阻止了与远程数据库的连接。
我正在尝试访问我的 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
这非常有效,它实际上阻止了与远程数据库的连接。