.pgpass с postgreSQL не работает

13

Я положил файл .pgpass в /folder/.pgpass, и это выглядит так

*:*:*:postgres:password_for_postgres

У меня есть скрипт bash, где я делаю резервную копию базы данных из postgreSQL:

#!/bin/bash
export PGPASSFILE=/folder/.pgpass
echo $PGPASSFILE
pg_dump --username=postgres --format=c --file=/backup/db/db.sqlc database

Тем не менее, сценарий по-прежнему запрашивает пароль. Насколько я вижу, PGPASSFILE имеет значение, как и должно быть. Любые намеки на то, что проблема может быть?

/ K

Керстин Вилтерстен
источник

Ответы:

8

Установлен ли для файла pgpass режим 0600 (т.е. только для чтения / записи владельцем)? Клиентская библиотека будет игнорировать его, если он доступен для чтения в группах или мире.

araqnid
источник
5

В моей конфигурации ( Ubuntu 10.04.3и PostgreSQL 8.4) я мог наконец заставить его работать, когда имя пользователя, в которое я вошел, совпадает с тем, для которого я пытаюсь получить пароль из .pgpassфайла.

deployerЯ вошел в систему как , я пытался использовать .pgpassфайл для доступа к базе данных, принадлежащей имени пользователя appname, которое не имеет эквивалента в Unix. Я не мог сделать .pgpassработу, пока я не начал использовать deployerв качестве пользователя для доступа к моей базе данных ...

Вот /home/deployer/.pgpassсодержимое моего файла:

*:*:*:deployer:password

Здесь часть /etc/postgresql/8.4/main/pg_hba.confодного:

# TYPE  DATABASE    USER        CIDR-ADDRESS          METHOD                                                

# "local" is for Unix domain socket connections only                                                        
local   all         all                               md5                                                   
# IPv4 local connections:                                                                                   
host    all         all         127.0.0.1/32          md5                                                   
host    all         all         192.168.0.1/32        md5                                                   
# IPv6 local connections:                                                                                   
host    all         all         ::1/128               md5 

Как видите, для всех моих подключений требуется пароль ( md5).

С этой конфигурацией, если у меня есть база данных, которую я создал с помощью этой команды:

deployer@ubuntu-server:~$ createdb -T template0 -O deployer -E UTF8 dbname

Я могу выполнить следующую операцию без ввода пароля:

deployer@ubuntu-server:~$ dropdb dbname

Как только я поменяю имя .pgpassна .pgpass-no, для него потребуется пароль.

Кстати, не забывайте, что ваш .pgpassфайл должен иметь 0600права доступа:

deployer@ubuntu-server:~$ ls -la .pgpass
-rw------- 1 deployer staff 24 2012-01-06 17:29 .pgpass
Ромен Шампурлье
источник
2
Вы можете управлять подключением пользователя pg, используя -Uфлаг dropdbиcreatedb
Кевин Хорн
0

1) Создать файл .pgpass с контентом

хост: 5432: somedb: someuser: somepass

2) установить разрешения с помощью команды

sudo chmod 600 .pgpass

3) Установите владельца файла тем же пользователем, с которым вы вошли в систему:

sudo chown login_username: login_username .pgpass

4) Установите переменную окружения PGPASSFILE:

export PGPASSFILE = '/ home / user / .pgpass'

Теперь проверьте, подключившись к базе данных:

psql -h host -U someuser somedb

Я не буду запрашивать пароль и залогинен в postgresql.

Шринивас
источник