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