我有一個EC2實例和我的Rails代碼,我試圖設置它與Amazon RDS交談,但是當我嘗試啓動rails服務器時出現錯誤我不知道怎麼糾正:在EC2和RDS上設置Rails
/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時,我可以很好地連接到實例,所以我很確定我的用戶名,密碼和主機是正確的。
您是否嘗試過使用'連接到MySQL的RDS -u <你的DB-用戶名> -p <你的DB-密碼> -h <你-RDS-公共/私人的DNS>'?你可以嘗試它,併發布錯誤輸出,如果有的話?另外,從您的安全組,我沒有看到任何有關在您的RDS實例上打開MySQL端口3306的規則。這也可能是一面旗幟。 – rhetonik 2013-02-22 12:39:14
你的意思是從EC2運行該命令?由於我可以從我的電腦登錄到RDS實例,所以端口似乎是開放的。 – yellowreign 2013-02-22 19:43:28
是的,該命令將從您的EC2實例執行。您的RDS安全組指示該實例具有SSH,HTTP和HTTPS訪問權限,但不提供MySQL訪問權限。通過從本地PC登錄到RDS實例,您的意思是SSH登錄或MySQL登錄? – rhetonik 2013-02-25 12:25:22