Проблемы с подключением к удаленному хосту MySQL через Rails - PullRequest
6 голосов
/ 16 ноября 2010

Я хотел подключиться к удаленному хосту 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 ]

1 голос
/ 21 апреля 2011

Возможно, вам потребуется разрешить серверу MySQL принимать удаленный запрос (путем привязки к IP-адресу хоста или ко всему формату адреса 0.0.0.0). Отредактируйте файл конфигурации MySQL my.cnf на удаленном хосте. В Ubuntu вы можете найти файл в /etc/mysql/my.cnf

Изменить значение bind-адреса:

bind-address            = 0.0.0.0
0 голосов
/ 26 марта 2012

Я нашел то же самое. Я использовал это:

RAILS_ENV=production bundle exec rails console

И он жаловался на невозможность найти /tmp/mysql.sock (который находится только в разделе разработки database.yml). Если я проверил Rails.env с консоли, он правильно сказал производство. Исправление так же просто, как:

RACK_ENV=production bundle exec rails console
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...