В моей конфигурации ( 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
-U
флагdropdb
иcreatedb
1) Создать файл .pgpass с контентом
2) установить разрешения с помощью команды
3) Установите владельца файла тем же пользователем, с которым вы вошли в систему:
4) Установите переменную окружения PGPASSFILE:
Теперь проверьте, подключившись к базе данных:
Я не буду запрашивать пароль и залогинен в postgresql.
источник