Я запускаю 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
?