Я запускаю PostgreSQL 9.3 на FreeBSD. FreeBSD использует pgsql
в качестве системного пользователя по умолчанию для PostgreSQL. Мой /usr/local/pgsql/data/pg_hba.conf
выглядит так:
# TYPE DATABASE USER ADDRESS METHOD
local all pgsql peer
local all all md5
host all all 127.0.0.1/32 md5
host all all ::1/128 md5
С этой конфигурацией я могу подключиться к базе данных как pgsql
без пароля.
$ su pgsql
$ psql template1
template1=# \l
List of databases
...
Это работает по назначению.
На удаленной машине у меня есть задача Ansible по созданию базы данных на сервере FreeBSD.
- name: Create the postgresql database
postgresql_db: name=mydatabase login_user=pgsql
Выполнение этой задачи завершается с ошибкой Peer authentication failed for user "pgsql"
.
PLAY [web] ********************************************************************
GATHERING FACTS ***************************************************************
ok: [host.example.org]
TASK: [database | Create the postgresql database] *****************************
failed: [host.example.org] => {"failed": true}
msg: unable to connect to database: FATAL: Peer authentication failed for user "pgsql"
FATAL: all hosts have already failed -- aborting
Почему это не удается, когда одноранговая аутентификация для пользователя pgsql
явно работает?
pgsql
? например, добавьте:sudo: true
иsudo_user: pgsql
к вашей команде - person Steve Lorimer   schedule 09.10.2014