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 ответов
Я также застрял на этой проблеме в течение очень долгого времени и пошел по различным ссылкам (включая те, которые предлагаются в этом посте), чтобы попытаться найти ответ, но безрезультатно. Однако решение очень простое. В то время как многие другие ответы были на правильном пути, вот точные шаги для решения проблемы:
открыть ваш файл pg_hba.conf файл в текстовом редакторе по вашему выбору. (Он расположен в / etc / postgresql / / main)
-
перейдите к строке, которая гласит:
# "local" предназначен только для подключений сокетов домена Unix
и вставить ниже:
local all all trust
Это будет доверять всем пользователям unix, пытающимся подключиться к серверу psql на локальном компьютере. (Читать документацию в верхней части страницы для получения дополнительной информации о функции столбцов)
сохраните файл pg_hba.conf файл и выйдите из текстового редактор.
-
перезапустите сервер Postgresql, выполнив команду:
перезапуск службы postgresql
-
теперь попробуйте запустить сервер psql, запустив:
psql-d-U (или "psql" для краткости)
вы должны быть в состоянии войти без проблем.
*Примечание: Все это предполагает, что у вас есть действительное имя пользователя 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 это выглядит так:
после вызова rake db: create вы можете забрать эту привилегию.
в моем случае, я обнаружил, что позднее host
строка правила разрешений в pg_hba.conf
файл переехал ранее local
линии. Я правильно настроил local
строка для использования аутентификации md5, но host
линия в ident
который я изменил на md5
как другие подчеркнули здесь, обратите внимание, что с помощью trust
является небезопасным методом, поэтому вы не должны использовать его в любом развертывании в стиле производства.