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