Postgres: проверка подлинности завершается неудачно при попытке войти с другим пользователем Unix - PullRequest
5 голосов
/ 07 декабря 2011

У меня есть пользователь hduser и пользователь postgres,

с hduser :

hduser@master:/$ psql -Upostgres -W analytics
Password for user postgres: 
psql: FATAL:  Ident authentication failed for user "postgres"
hduser@master:/$ 

с postgres :

postgres@master:/opt/pentaho/biserver-ce$ psql -Upostgres -W analytics
Password for user postgres: 
psql (8.4.9)
Type "help" for help.

analytics=# 

Как я могу войти в одну и ту же базу данных с другим пользователем, таким как hduser или другим?

Спасибо

Ответы [ 4 ]

18 голосов
/ 07 декабря 2011

Конфигурация PostgreSQL по умолчанию разрешает «локальный» доступ к базе данных только пользователям базы данных, имя которых совпадает с именем пользователя ОС.«локальный» означает отсутствие трафика IP, используя только сокеты Unix-Domain.См. Документацию для файла конфигурации pg_hba.conf, особенно строки, начинающиеся с «local» и метод аутентификации «peer» или «identif».

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

foouser@host$ psql -U baruser -h 127.0.0.1 database

Плохое сообщение о том, что суперпользователь БД postgres по умолчанию НЕ имеет пароля, поэтому сначала вы должны установить его.

1 голос
/ 07 декабря 2011

Postgres обрабатывает аутентификацию и авторизацию отдельно.

Параметры аутентификации настраиваются в файле: pg_hba.conf - этот файл описывает, какие методы аутентификации разрешено использовать пользователям и с каких хостов они могут подключаться.

Авторизация для доступа к базам данных и таблицам настраивается путем выдачи инструкций GRANT в SQL.

В большинстве систем Linux пользователь Postgres настроен на использование аутентификации «dent »и не имеет пароля дляпо умолчанию, поэтому, если вы хотите войти в систему с помощью пароля, вам необходимо настроить его с помощью оператора SQL, а затем изменить свой файл pg_hba.conf, чтобы позволить пользователю postgres войти в систему с помощью пароля:

ALTER ROLE postgres WITH PASSWORD password

0 голосов
/ 07 декабря 2011

Я добавил следующее в pg_hba.conf, и это исправлено

local   all         all                         trust
0 голосов
/ 07 декабря 2011

Вы можете настроить файл .pgpass для hduser

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