2013-02-22 2 views
1

У меня есть экземпляр EC2 с кодом Rails, и я пытаюсь настроить его, чтобы поговорить с Amazon RDS, но я получаю сообщение об ошибке при попытке запустить сервер rails что я не знаю, как исправить:Настройка Rails на EC2 и RDS

/opt/bitnami/ruby/lib/ruby/gems/1.9.1/gems/mysql2-0.3.11/lib/mysql2/client.rb:44:in `connect': Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) (Mysql2::Error) 

в моем файле database.yml, у меня есть это:

development: 
    adapter: mysql2 
    encoding: utf8 
    reconnect: false 
    database: development 
    pool: 5 
    username: root 
    password: secret 
    host: localhost 

production: 
    adapter: mysql2 
    encoding: utf8 
    database: mydbname 
    username: myusername 
    password: mypassword 
    host: mypublicdnsformydb 
    port: 3306 

я назначил экземпляр RDS в той же группе безопасности, как мой EC2, который имеет :

22 (SSH) 0.0.0.0/0 
80 (HTTP) 0.0.0.0/0 
443 (HTTPS) 0.0.0.0/0 

Когда я добавляю CIDR моего ПК, я могу подключиться к экземпляру отлично, поэтому я уверен, что мое имя пользователя, пароль и хост верны.

+0

Вы пытались подключиться к RDS с помощью 'MySQL -u <ваш-дб-имя пользователя> -p <ваш-дб-пароль> -h <ваш-выстр-государственные/частные DNS> '? Можете ли вы попробовать и опубликовать вывод ошибки, если таковой имеется? Кроме того, из вашей группы безопасности я не вижу никакого правила, которое говорит об открытии порта MySQL 3306 на вашем экземпляре RDS. Это может быть и флаг. – rhetonik

+0

Вы имеете в виду под управлением этой команды из EC2? Порт кажется открытым, так как я могу войти в экземпляр RDS с моего ПК. – yellowreign

+0

Да, команда должна быть выполнена из вашего экземпляра EC2. Группа безопасности RDS указывает, что экземпляр имеет доступ к SSH, HTTP и HTTPS, но он не обеспечивает доступ к MySQL. При входе с локального ПК на экземпляр RDS вы имели в виду логин SSH или логин MySQL? – rhetonik

ответ

1

Чтобы исправить это, я добавил эту строку в моем database.yml для производства

socket: /opt/bitnami/mysql/tmp/mysql.sock 

и я пробежал рельсы сервера с указанием производства, как окружающая среда:

rails s -e production 
0

Я думаю, что проблема заключается в том, что ваша среда разработки указывает на локальную mysql, а не RDS. По умолчанию Rails работает среда разработки не производство, поэтому я хотел бы попробовать добавить один и тот же конфиг производства в Dev:

development: 
    adapter: mysql2 
    encoding: utf8 
    database: mydbname 
    username: myusername 
    password: mypassword 
    host: mypublicdnsformydb 
    port: 3306 
Смежные вопросы