rake db: ошибка создания, проблема аутентификации с postgresql 8.4

перво-наперво, прошу прощения за полнейший noobness. Я действительно пытался найти решение, но теперь я застрял и совершенно невежественен.

Я пытаюсь развернуть приложение rails 3 на удаленном сервере ; при разработке на моей локальной виртуальной машине никаких проблем не было. Но теперь, когда я пытаюсь запустить

rake db:create

это не удается, с ошибкой (здесь переведено, так как я французский):

FATAL : password authentication failed for user <<mylogin>>

вот моя база данных.в формате YML :

login: &login
  adapter: postgresql
  username: mylogin
  password: mypassword
  host: localhost
  port: 5432
  encoding: UTF8

development:
  <<: *login
  database: somesite_development

test:
  <<: *login
  database: somesite_test

production:
  <<: *login
  database: somesite_production

пользователь "mylogin" был создана postgre-сторона с помощью инструмента командной строки "createuser". Он уполномочен создавать dbs. в PostgreSQL.conf настраивает сервер для прослушивания localhost. Я пробовал много вещей с pg_hba.conf, ни один не работал-независимо от используемого метода (ident, password, md5) для пользователя "mylogin" на 127.0.0.1, аутентификация не выполняется - хотя у меня никогда не было проблем с подключением / созданием dbs с psql.

любой ключ ?

EDIT: хорошо, узнал, как невероятно глупо я был... пароль для моего пользователя просто не было установлено ! Кажется, я забыл точку с запятой после

изменить пользователя xxxx с паролем xxxx;

... я увидел это, запросив "SELECT * FROM pg_shadow;" - поле пароля было пустым. Три дня моей жизни потрачены впустую из-за этой глупой ошибки...

6 ответов


Я также застрял на этой проблеме в течение очень долгого времени и пошел по различным ссылкам (включая те, которые предлагаются в этом посте), чтобы попытаться найти ответ, но безрезультатно. Однако решение очень простое. В то время как многие другие ответы были на правильном пути, вот точные шаги для решения проблемы:

  1. открыть ваш файл pg_hba.conf файл в текстовом редакторе по вашему выбору. (Он расположен в / etc / postgresql / / main)

  2. перейдите к строке, которая гласит:

    # "local" предназначен только для подключений сокетов домена Unix

и вставить ниже:

  local all         all                 trust

Это будет доверять всем пользователям unix, пытающимся подключиться к серверу psql на локальном компьютере. (Читать документацию в верхней части страницы для получения дополнительной информации о функции столбцов)

  1. сохраните файл pg_hba.conf файл и выйдите из текстового редактор.

  2. перезапустите сервер Postgresql, выполнив команду:

    перезапуск службы postgresql

  3. теперь попробуйте запустить сервер psql, запустив:

    psql-d-U (или "psql" для краткости)

  4. вы должны быть в состоянии войти без проблем.

*Примечание: Все это предполагает, что у вас есть действительное имя пользователя psql для входа в систему. Если вы не следуете приведенным ниже ссылкам настройки:

Настройки пользователя: http://erikonrails.snowedin.net/?p=274

убедитесь, что у вас есть действительный пользователь postgres: http://archives.postgresql.org/pgsql-novice/2002-08/msg00072.php

Список всех существующих пользователей psql в : Если вы ищете команду" список пользователей "или" отобразить пользователей", попробуйте:

" select * from pg_user; "(при входе в psql)

удачи!


у меня была такая же проблема. В моем случае это было потому, что в моем


вот некоторые краткие инструкции, которые должны работать для вас

http://www.cyberciti.biz/faq/psql-fatal-ident-authentication-failed-for-user/.

в основном вам нужно установить метод аутентификации для localhost на "доверие".


вам нужно дать" myuser "в postgresql привилегию"может создавать объекты базы данных".

в pgadmin это выглядит так:

enter image description here

после вызова rake db: create вы можете забрать эту привилегию.


в моем случае, я обнаружил, что позднее host строка правила разрешений в pg_hba.conf файл переехал ранее local линии. Я правильно настроил local строка для использования аутентификации md5, но host линия в ident который я изменил на md5

как другие подчеркнули здесь, обратите внимание, что с помощью trust является небезопасным методом, поэтому вы не должны использовать его в любом развертывании в стиле производства.