Я хочу выполнять запросы к своим базам данных postgres из сценариев и прочего, не делая того, что я делаю сейчас:
sudo su - postgres
psql -U USER ...etc
Это громоздко, потому что мне нужно ввести 2 разных пароля. Есть ли способ настроить postgres так, чтобы он видел, что я уже вошел в систему как пользователь, который соответствует имени пользователя postgres, и войти в систему таким образом?
PostgreSQL поддерживает метод аутентификации, называемый peer, который ищет имя пользователя подключающегося пользователя в ОС и в базе данных, и, если они совпадают, разрешает вход. Это поддерживается только для локального подключения и может быть настроено в вашем pga_hba.conf
вот так:
# TYPE DATABASE USER ADDRESS METHOD
local all postgres peer
Эта конфигурация должна позволить вам войти в PostgreSQL как пользователь базы данных postgres без пароля, если вы также запускаете сценарий или соединение как пользователь postgres на стороне Linux.
См. Также документацию PostgreSQL по файл pg_hba.conf и одноранговая аутентификация
Ты можешь использовать Карты имен пользователей для peer
или ident
методы аутентификации.
Предположим, у вас есть пользователь linux с именем admin
. У вас должна быть строка в pg_hba.conf файл, подобный этому;
#local database user auth-method [auth-options]
local all postgres peer map=linuxusers
Затем вы должны создать отображение пользователя в pg_ident.conf;
# MAPNAME SYSTEM-USERNAME PG-USERNAME
linuxusers postgres postgres
linuxusers sahap postgres
linuxusers carson postgres
Наконец перезагрузите postgresql.