Я только начинаю работать с 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=#
Что я неправильно понял?
psql -U это пытается корректно работать. Однако, способ, которым postgresql пытается аутентифицировать вас, не работает.
Когда вы sudo to postgres, команда psql забирает вашу личность из оболочки sudo'ed. Без "-U" она пытается использовать идентификатор пользователя и ищет его в списке ролей. Она говорит: "Эй, клиент работает под идентификатором пользователя postgres! Мы можем доверять ему!"
В обоих случаях, это файл pg_hba.conf, который контролирует вещи. Он говорит postgresql доверять локальному пользователю по имени 'postgres'. Но в противном случае, он использует 'одноранговую' аутентификацию.
С помощью 'одноранговой' аутентификации он ожидает увидеть пользователя базы данных ("role") с вашим именем, а затем аутентифицирует вас как этого пользователя (только!).
. Учебник работает только при установке PostgreSQL из исходного кода. В вашей установке Ubuntu контроль доступа уже был настроен, поэтому не все могут войти в систему (отсюда «ошибка аутентификации»). Чтобы следовать руководству, попробуйте войти в систему под пользователем postgres
( sudo -u postgres -i
), а затем выполните действия, описанные в руководстве.