首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在两个EC2实例上使用MySQL数据库不能在一个实例上运行

问在两个EC2实例上使用MySQL数据库不能在一个实例上运行
EN

Stack Overflow用户
提问于 2013-04-23 23:02:38
回答 3查看 1.2K关注 0票数 0

我正在尝试设置两个Rails应用程序。我希望它们都使用一个MySQL数据库。我的设置如下:

使用Elastic Beanstalk,我已经在两个不同的环境中设置了两个Rails应用程序。其中一个应用程序是我使用MySQL数据库设置的。所以现在我有两个RDS实例--每个rails应用一个EC2实例和一个RDS MySQL实例。

我在两个EC2实例中都设置了安全组,以便能够通过port 3306连接到MYSQL。

我已经将DB安全组设置为授权两个EC2实例,并使用第二个EC2实例(配置Beanstallk应用程序时未设置MySQL数据库的实例)的专用IP设置CIDR/IP。

在这两个Rails应用程序中,我将database.yml设置如下:

代码语言:javascript
复制
production:
  adapter: mysql2
  encoding: utf8
  database: <%= ENV['RDS_DB_NAME'] %>
  username: <%= ENV['RDS_USERNAME'] %>
  password: <%= ENV['RDS_PASSWORD'] %>
  host: <%= ENV['RDS_HOSTNAME'] %>
  port: <%= ENV['RDS_PORT'] %>

我使用第一个EC2实例中的ENV值为第二个实例(没有MySQL DB的那个实例)上的生产实例分配了ENV值。

这里我漏掉了什么?

我还将我的计算机的IP地址添加到了DB Securty Group中,并且我能够使用作为ENV使用的凭据连接到MySQL DB。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-04-27 06:07:56

问题解决了-我在database.yml文件中设置了DB凭据,而不是ENV变量。在弹性豆茎上使用git aws.push的每次推送都会覆盖环境变量。

票数 0
EN

Stack Overflow用户

发布于 2013-04-24 00:30:47

您可能会遗漏以下内容:

代码语言:javascript
复制
socket: /var/lib/mysql/mysql.sock
票数 2
EN

Stack Overflow用户

发布于 2016-05-09 22:44:25

在我的例子中,这是因为我使用了错误的ENV变量名。您可以通过使用eb ssh连接到您的实例,然后使用printenv | grep RDS再次检查您是否正确设置了所有内容,这应该会给出类似如下的结果:

代码语言:javascript
复制
RDS_HOSTNAME=yourhostname.amazonaws.com
RDS_DB_NAME=ebdb
RDS_PASSWORD=yourpassword
RDS_USERNAME=yourusername
RDS_PORT=3306

确保这些都反映在您的config/database.yml文件中--通过使用<%= ENV['varname'] %>或对它们进行硬编码。显然,前一种选择更可取。:)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16172766

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档