【问题标题】:can't connect to rds at ec2 server, missing mysql socket无法连接到 ec2 服务器上的 rds,缺少 mysql 套接字
【发布时间】:2013-03-27 15:24:17
【问题描述】:

我有一个 ec2 服务器和 rds 服务器。 和一个 Ruby On Rails 应用程序 在本地 ENV 中使用这些设置连接到 rds 对我有用:

host: myappnameandhash.us-west-2.rds.amazonaws.com
adapter: mysql2
encoding: utf8
reconnect: false
database: mainDb
pool: 20
username: root
password: xxxx
socket: /var/run/mysqld/mysqld.sock
port: 3306

但在我的 EC2 服务器上,我没有那个 mysqld.sock 文件 所以我得到这个错误:

FATAL: 连接 MySQL 失败(error=Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2))

我需要安装什么才能拥有插座?

谢谢

更新:

我删除了套接字定义和端口。 我使用 capistrano 进行部署,现在我 ssh 到我的服务器并转到“当前”文件夹。在那里我尝试运行:rake ts:start 我得到以下信息:

rake 中止! 无法通过socket '/var/run/mysqld/mysqld.sock'连接本地MySQL服务器(二)

但我的 database.yml 文件中甚至没有套接字定义

【问题讨论】:

    标签: ruby-on-rails amazon-web-services amazon-rds


    【解决方案1】:

    我知道这已经有一段时间了,我的 EC2 服务器连接到 RDS 时遇到了这个问题。想分享一下我是如何解决这个问题的。

    首先从 database.yml 帮助中删除 socketport

    #In your database.yml
    
    development:
      #some configuration
    
    staging:
      #some configuration
    
    production:
      adapter: mysql2
      encoding: utf8
      reconnect: false
      pool: 20
      host: url.to.rds.server
      database: your-database
      username: your-username
      password: your-password
    

    要在生产环境中运行此 rake 命令,您需要指定 rails-env,例如如果你使用production环境,应该是

    bundle exec rake ts:start RAILS_ENV=production
    

    【讨论】:

      【解决方案2】:

      您必须指定 RDS 的“主机”,并在 RDS 中配置安全组以允许您的实例连接到它。

      【讨论】:

        【解决方案3】:

        从你的 database.yml 文件中删除套接字和端口号,然后尝试,它会工作。

        【讨论】:

        • 仍然无法正常工作.. :( 用我看到的更多内容更新我的问题
        • 尝试一次重新启动实例。还要检查您是否在您的实例上安装了 my-client 库
        猜你喜欢
        • 2014-02-25
        • 2021-04-17
        • 2013-11-08
        • 2014-03-31
        • 2020-10-19
        • 1970-01-01
        • 2015-03-09
        • 2015-06-24
        • 1970-01-01
        相关资源
        最近更新 更多