Почему у меня не работает «psql -U»?

Я только начинаю работать с Postgres.

Это свежая установка Postgres 9.5 на Ubuntu 14.04 LTS. Я использовал репозиторий apt из: http://www.postgresql.org/download/linux/ubuntu/

Вводная страница http://www.postgresql.org/docs/9.5/static /tutorial-createdb.html говорит, что "-U" должно работать. Это не так:

chris@blue:~$ psql -U postgres
psql: FATAL:  Peer authentication failed for user "postgres"

Тем не менее, если я «su» для postgres, все в порядке:

chris@blue:~$ sudo su - postgres
postgres@blue:~$ psql
psql (9.5.2)
Type "help" for help.

postgres=# 

Что я неправильно понял?

0
задан 5 May 2016 в 15:31
2 ответа

psql -U это пытается корректно работать. Однако, способ, которым postgresql пытается аутентифицировать вас, не работает.

Когда вы sudo to postgres, команда psql забирает вашу личность из оболочки sudo'ed. Без "-U" она пытается использовать идентификатор пользователя и ищет его в списке ролей. Она говорит: "Эй, клиент работает под идентификатором пользователя postgres! Мы можем доверять ему!"

В обоих случаях, это файл pg_hba.conf, который контролирует вещи. Он говорит postgresql доверять локальному пользователю по имени 'postgres'. Но в противном случае, он использует 'одноранговую' аутентификацию.

С помощью 'одноранговой' аутентификации он ожидает увидеть пользователя базы данных ("role") с вашим именем, а затем аутентифицирует вас как этого пользователя (только!).

.
1
ответ дан 4 December 2019 в 13:41

Учебник работает только при установке PostgreSQL из исходного кода. В вашей установке Ubuntu контроль доступа уже был настроен, поэтому не все могут войти в систему (отсюда «ошибка аутентификации»). Чтобы следовать руководству, попробуйте войти в систему под пользователем postgres ( sudo -u postgres -i ), а затем выполните действия, описанные в руководстве.

1
ответ дан 4 December 2019 в 13:41

Теги

Похожие вопросы