Я поместил файл .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 имеет такое значение, насколько я могу судить. Есть какие-нибудь намеки на то, в чем может быть проблема?
/ К
Установлен ли для файла pgpass режим 0600 (т.е. чтение / запись только владельцем)? Клиентская библиотека проигнорирует его, если он доступен для чтения для группы или для всех.
На моей конфигурации (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
Еще нужно проверить, что вы не использовали -W
флаг с psql
, потому что это всегда приведет к принудительному вводу пароля вместо проверки вашего .pgpass
хост: 5432: somedb: someuser: somepass
sudo chmod 600 .pgpass
sudo chown имя_пользователя: имя_пользователя .pgpass
экспорт PGPASSFILE = '/ home / user / .pgpass'
Теперь проверьте, подключившись к базе данных:
psql -h host -U someuser somedb
Я не буду запрашивать пароль и авторизуюсь в postgresql.