Как настроить postgresql, чтобы он принимал логин + пароль аутентификации? - PullRequest
30 голосов
/ 01 декабря 2010

У меня свежая установка Ubuntu 10.10 со всеми обновлениями и postgresql 8.4
Для того, чтобы postgresql мог принимать подключения по логину и паролю, я настроил его через:

sudo su postgres
psql
ALTER USER postgres WITH PASSWORD 'password';
CREATE DATABASE myapp;
\q
exit
sudo vi /etc/postgresql/8.4/main/pg_hba.conf
change "local all all indent" to "local all all trust"

Но, что удивительно, это не работает! Команда

psql -U postgres password

Оценивается с ошибкой:

psql: FATAL:  Ident authentication failed for user "postgres"

Любые подсказки, как я могу заставить psql -U работать?

Ответы [ 3 ]

42 голосов
/ 01 декабря 2010

Вероятно, хорошей идеей будет оставить пользователя "postgres" с идентификационной аутентификацией. По умолчанию, я считаю, что Ubuntu использует пользователя «postgres» для выполнения обновлений, резервного копирования и т. Д., И для этого требуется, чтобы он мог входить в систему без указания пароля.

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

Вот как выглядят соответствующие части моего pg_hba.conf:

# allow postgres user to use "ident" authentication on Unix sockets
# (as per recent comments, omit "sameuser" if on postgres 8.4 or later)
local   all   postgres                         ident sameuser
# allow all other users to use "md5" authentication on Unix sockets
local   all   all                              md5
# for users connected via local IPv4 or IPv6 connections, always require md5
host    all   all        127.0.0.1/32          md5
host    all   all        ::1/128               md5

Также обратите внимание, что psql -U postgres password не будет делать то, что вы хотите. Пароль никогда не должен указываться в командной строке. Это попытается войти как пользователь "postgres" в базу данных с именем "password".

Вы должны использовать psql -U postgres myapp вместо этого. Postgres автоматически запросит у вас пароль, если он настроен должным образом.

Если мы хотим, чтобы пароль был введен автоматически, поместите его в файл $ HOME / .pgpass

2 голосов
/ 01 декабря 2010

Я думаю, что ваш pg_ident.conf файл неправильно настроен.Кроме того, вы пробовали

psql -U postgres -W
0 голосов
/ 28 марта 2013

Еще одна вещь, которая может вызвать это, истек срок действия учетных данных.Я не думаю, что это произошло в версии 8, но в версии 9, когда вы создаете новую роль в pgadmin, она создается в состоянии с истекшим сроком действия, и вам нужно изменить или очистить дату окончания роли, прежде чем вы сможете войтиэто.

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