heroku db: тянуть не удается из-за отсутствия пароля, когда я не указал пароль - PullRequest
3 голосов
/ 06 октября 2011

Когда я выполняю heroku db: pull, он находит мой локальный dev db по адресу:

postgres://127.0.0.1/myapp_development?encoding=utf8

как только я подтверждаю, это не с:

Sequel::DatabaseConnectionError -> PGError: fe_sendauth: no password supplied

Я попытался запустить тягу с указанием локальной базы данных, например,

heroku db:pull postgres://root:@localhost/db_name

, которая выдает ту же ошибку без пароля.

Я подумал, что мне может понадобиться изменить root: на myname: потому что это пользователь, которому я предоставил права суперпользователя при настройке postgres, но ни root:, ни myname: не работают

Мой database.yml имеет имя пользователя: и пароль: пусто для всех указанных баз данных.

В командной строке под именем myname @ ubuntu я могу набрать psql myapp_development, подключиться нормально и запустить select.

Что мне здесь не хватает?

Это связано с моими настройками pg_hba.conf? Я заглянул внутрь и там написано:

# Database administrative login by UNIX sockets
local   all         postgres                          ident

# TYPE  DATABASE    USER        CIDR-ADDRESS          METHOD

# "local" is for Unix domain socket connections only
local   all         all                               ident
# IPv4 local connections:
host    all         all         127.0.0.1/32          md5
# IPv6 local connections:
host    all         all         ::1/128               md5

Должно ли здесь использоваться слово "доверенный"? И если так, если я редактирую этот файл, мне нужно перезапустить postgres? И если необходимо «доверие», то почему рельсы и инструменты командной строки psql работают без паролей при входе в систему под моим именем myname?

Спасибо!

1 Ответ

5 голосов
/ 06 октября 2011

Метод аутентификации trust может помочь, но, как вы, несомненно, знаете, это небезопасно.
После редактирования pg_hba.conf вам не нужно перезапускать. A reload достаточно (цитируя руководство ):

Файл pg_hba.conf читается при запуске и при работе основного сервераполучает сигнал SIGHUP.Если вы редактируете файл в активной системе, вам нужно будет дать сигнал почтмейстеру (используя pg_ctl reload или kill -HUP), чтобы он перечитал файл.

pg_ctl reload

См. прекрасное руководство .Возможно, вам понадобится руководство для версии для 8.3 .Shared db на heroku в настоящее время работает на PostgreSQL 8.3.(Также я сомневаюсь, что у вас есть доступ к pg_ctl на heroku.)

Будьте в курсе this :

Если нет пароля имеетбыл установлен для пользователя, сохраненный пароль является нулевым, и пароль аутентификация всегда будет неуспешной для этого пользователя.

Подчеркните мой.Вы можете войти в систему локально, потому что auth-методы ident или peer позволяют это сделать.Но для вашей цели вам может понадобиться пароль

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