使用Rails连接到远程MySQL主机的问题

时间:2010-11-16 14:37:15

标签: mysql ruby-on-rails database

我想连接到远程MySQL主机(rake db:create),但Rails总是认为它是本地的。 Database.yml使用以下配置:

defaults: &defaults
  encoding: unicode
  adapter: mysql
  username: <username>
  password: *************
  port: 3306
  host: <remote ip address>

development:
  <<: *defaults
  database: <db name>
test: &test
  <<: *defaults
  database: <db name>
production:
  <<: *defaults
  database: <db name>

在数据库上尝试任何内容时总会出现此错误:

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)

只要我使用本地数据库(即没有主机/端口部分),配置就可以工作。 连接到远程MySQL服务器可以使用给定的详细信息正常工作。

关于出了什么问题的任何想法?

修改: 问题只发生在rake:db:create,其他任务有效 - 错误信息非常误导。

2 个答案:

答案 0 :(得分:1)

您可能需要启用MySQL服务器来接受远程请求(通过绑定到主机的IP地址或所有地址格式0.0.0.0)。编辑远程主机上的MySQL配置文件my.cnf。在Ubuntu中,您可以在/etc/mysql/my.cnf

中找到该文件

更改bind-address的值:

bind-address            = 0.0.0.0

答案 1 :(得分:0)

我发现了同样的事情。我正在使用它:

RAILS_ENV=production bundle exec rails console

它抱怨无法找到/tmp/mysql.sock(仅在database.yml的开发部分)。如果我从控制台检查Rails.env它正确地说生产。修复很简单:

RACK_ENV=production bundle exec rails console