【问题标题】:Why do I get a SQLSTATE[HY000] [2002] Connection refused error when running an artisan command in my EC2 instance?为什么在我的 EC2 实例中运行 artisan 命令时出现 SQLSTATE[HY000] [2002] Connection denied 错误?
【发布时间】:2022-03-31 14:51:49
【问题描述】:

我在 Elastic Beanstalk 上设置了一个 Laravel Web 应用程序,它可以很好地连接到 RDS 数据库。我通过 EB 中的配置设置设置了环境变量。当我 ssh 进入 EC2 实例并运行自定义工匠命令来查询数据库时,如“sudo php artisan check-companies”,我收到错误 SQLSTATE[HY000] [2002] Connection denied (SQL: the query)”。什么可以会导致此错误吗?这里有一些注意事项以及我尝试过的方法。

  1. 我的工作人员每天都运行相同的工匠命令,并且可以正常工作。
  2. 我能够从 MYSQL 命令行实用程序连接到 Aurora 集群,并在我 ssh 进入实例时运行查询。
  3. 我尝试将环境变量暴露给实例,如下所示:https://aws.amazon.com/premiumsupport/knowledge-center/elastic-beanstalk-env-variables-shell/
  4. 我确保我的安全组中的端口 3306 已打开

【问题讨论】:

  • 您登录的用户是否有权使用数据库凭据读取.env 文件?你的.env 文件是什么样的?您使用什么命令使用mysql 连接到您的数据库?请edit您的问题提供相关信息,以便我们提供帮助!

标签: laravel amazon-web-services amazon-ec2 amazon-elastic-beanstalk amazon-rds


【解决方案1】:

您是否检查过您的 sudo 用户是否有权访问环境变量?这就是我的问题,我找到了这个链接:

https://askubuntu.com/questions/161924/how-do-i-set-persistent-environment-variables-for-root

这表明 sudo 用户应该从基本用户那里获取环境变量。

我能够对此进行测试,方法是在我的服务器上执行 printenv 并将环境变量检查为 sudo 和我创建的基本用户。我可以看到这些是不同的,这意味着我没有通过我的环境变量。

使用sudo -E su 允许我访问以进行测试,因为我不想坚持,但如果你这样做,答案就在上面的链接中。

【讨论】:

    猜你喜欢
    • 2014-07-13
    • 1970-01-01
    • 1970-01-01
    • 2017-07-08
    • 1970-01-01
    • 2015-09-05
    • 2018-11-25
    • 2021-11-24
    • 1970-01-01
    相关资源
    最近更新 更多