У моїй конфігурації ( 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