Elastic Beanstalk 应用程序无法连接到数据库,但服务器可以

Elastic Beanstalk Application Can't Connect to Database but Server Can

我有一个无法连接到数据库的 Elastic Beanstalk 应用程序,但它 运行 所在的服务器可以很好地连接到数据库。

当我尝试部署我的弹性 beanstalk 应用程序时,它给我一个数据库错误 Access Denied(部署过程需要连接到数据库才能 运行 迁移。我的数据库是RDS。我在环境中配置了数据库的环境变量。我设置了安全组以允许环境服务器连接到 RDS。当我 ssh 进入服务器时,我可以通过数据库终端打开数据库连接以数据库,只是应用程序连接不上,怎么回事?

问题出在数据库密码中的非字母数字字符。在这种情况下,罪魁祸首是“$”。将数据库密码改为纯字母数字即可解决。

Elastic beanstalk 环境变量通过它生成的 shell 脚本传递给您的应用程序。如果您的密码中有美元符号,Linux 会将其解释为密码中嵌入的 shell 变量,并将忽略密码中美元符号后的任何内容。