【问题标题】:Accessing a remote database is giving an error on Laravel访问远程数据库在 Laravel 上出现错误
【发布时间】:2021-11-28 19:29:25
【问题描述】:

我正在尝试访问我的 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"

我不确定这是否重要,但如果我转到链接 IP.ADDRESS/phpmyadmin

,我可以访问 Web 服务器的数据库

我的web.php文件如下:

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

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

我的尝试:我尝试了上面提到的所有内容,并且还清除了缓存,因为我通过输入以下命令对 .env 文件进行了更改:

php artisan config: clear 
php artisan cache: clear

任何帮助将不胜感激。谢谢。

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

此外,我还检查了 phpMyadmin 上的端口号,它是 3306,如下图所示: Port Number

【问题讨论】:

  • 确保您的 IP_ADDRESS 之前没有空格,并且您尝试连接的 MySQL 用户具有从远程主机连接的适当权限
  • "...IP_ADDRESS/phpmyadmin(我的数据库所在的位置)..." 这不是您的数据库所在的位置,phpMyAdmin 是“仅”一个连接到你的 MySQL 服务器
  • @brombeer 感谢您的回复。我确实删除了空间,我看到了。 IP_ADDRESS 指向一个 Web 应用程序,并且数据库存在于该服务器上。我认为只使用 IP_ADDRESS 就足够了,但我想不是。我在哪里可以找到路径,然后这是否意味着我在 .env 文件中将该路径添加到 DB_HOST?
  • 您只需使用 IP 地址和端口(使用正确的凭据)进行连接
  • @brombeer 是的,我最初确实只有 DB_HOST 中的 IP.ADDRESS,但错误消息没有改变。

标签: php laravel database connection laravel-7


【解决方案1】:

以防万一其他人将来偶然发现这篇文章,事实证明我不必创建 SSH 隧道或将 IP 列入白名单。问题实际上出在 SELinux 上。这篇文章是解决方案:Laravel permission denied on remote Mysql server (AWS aurora)

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-02-05
    • 2021-01-08
    • 1970-01-01
    • 2014-07-06
    • 2012-06-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多