W mojej konfiguracji ( Ubuntu 10.04.3
i PostgreSQL 8.4
) mogłem w końcu go uruchomić, gdy nazwa użytkownika, do której jestem zalogowany, jest taka sama jak ta, dla której próbuję uzyskać hasło z .pgpass
pliku.
Zalogowałem się jako deployer
, próbowałem użyć tego .pgpass
pliku, aby uzyskać dostęp do bazy danych należącej do nazwy użytkownika appname
, która nie ma odpowiednika użytkownika w systemie Unix. Nie mogłem .pgpass
pracować, dopóki nie zacząłem deployer
uzyskiwać dostępu do bazy danych jako użytkownik ...
Oto moja /home/deployer/.pgpass
zawartość pliku:
*:*:*:deployer:password
Oto część tego /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
Jak widać, wszystkie moje połączenia wymagają hasła ( md5
).
Przy tej konfiguracji, zakładając, że mam bazę danych utworzoną za pomocą tego polecenia:
deployer@ubuntu-server:~$ createdb -T template0 -O deployer -E UTF8 dbname
Jestem w stanie wykonać następującą operację bez podawania hasła:
deployer@ubuntu-server:~$ dropdb dbname
Gdy tylko zmienię nazwę .pgpass
na .pgpass-no
, będzie wymagało hasła.
BTW, nie zapominaj, że twój .pgpass
plik musi mieć 0600
uprawnienia:
deployer@ubuntu-server:~$ ls -la .pgpass
-rw------- 1 deployer staff 24 2012-01-06 17:29 .pgpass
-U
flagi dodropdb
icreatedb
1) Utwórz plik .pgpass z zawartością
2) ustaw uprawnienia za pomocą polecenia
3) Ustaw właściciela pliku jako tego samego użytkownika, za pomocą którego się zalogowałeś:
4) Ustaw zmienną środowiskową PGPASSFILE:
Teraz sprawdź, łącząc się z bazą danych:
Nie będę pytał o hasło i zalogowałem się na postgresql.
źródło