我在 AWS 上使用 Elastic Beanstalk/EC2 为我的 PHP API 设置了 RDS(mysql)。
该 API 可以通过 http 和 https 访问,但似乎与数据库的连接遇到了问题,因为我收到了错误:
“SQLSTATE[HY000] [2002] 连接超时”,“error_data”:
我检查过的内容:
- 我的 PHP 应用程序已实现负载平衡,并附加了 SSL 证书,并通过 cloudfront 通过 https 提供服务。分配给此 EC2 实例的安全组与我用于 RDS 的安全组相同,具有接受 http 连接的入站规则(它还附加到允许其处于
authorized
状态的默认 RDS 安全组)
我可以通过 sequel pro 中的凭证连接到数据库实例
我仔细检查了我的 elastic beanstalk
env
变量,它们与我在服务器上成功登录 sequel pro 时使用的变量相同
我检查了服务器日志,并没有得到关于无法连接的更多详细信息。
编辑:添加了 MYSQL 的入站设置
答案1
我的建议如下:
1-记下您创建的 RDS 实例的端点用户名、密码和主机名。
2-将安全组和 VPC 分配给您将分配给 Elastic Beanstalk 应用程序中的环境的 RDS。
3- 在您的 EB 环境中,如果环境已部署,请转到配置选项卡。如果尚未部署,您可以在创建环境时转到页面底部的配置选项。然后转到软件选项。层次结构如下。环境 -> 配置 -> 软件在页面下方,您将有一个选项,用于以键值对的形式添加环境变量,您必须在那里添加以下标签:
DB_HOST = 您的 RDS 端点
DB_NAME = 您在创建数据库时指定的数据库名称
DB_PASS = 您在创建数据库时提供的密码
DB_PORT = 您指定的端口,在大多数情况下,mysql 的端口为 3306。
DB_USER = 您在创建数据库时提供的用户名
保存配置并运行环境,希望这能解决问题。