.pgpass con postgreSQL non funzionante


13

Ho messo un file .pgpass in /folder/.pgpass e sembra così

*:*:*:postgres:password_for_postgres

Ho uno script bash in cui eseguo il backup del database da postgreSQL:

#!/bin/bash
export PGPASSFILE=/folder/.pgpass
echo $PGPASSFILE
pg_dump --username=postgres --format=c --file=/backup/db/db.sqlc database

Tuttavia, lo script mi ​​promette ancora la password. PGPASSFILE ha il valore come dovrebbe, per quanto posso vedere. Qualche suggerimento su quale potrebbe essere il problema?

/K

Risposte:


8

Il file pgpass è impostato sulla modalità 0600 (ovvero lettura / scrittura solo dal proprietario)? La libreria client la ignorerà se è leggibile da gruppi o mondo.


5

Nella mia configurazione ( Ubuntu 10.04.3e PostgreSQL 8.4), potrei finalmente farlo funzionare quando il nome utente a cui ho effettuato l'accesso è lo stesso di quello per cui sto cercando di ottenere una password dal .pgpassfile.

Effettuato l'accesso come deployer, stavo cercando di utilizzare il .pgpassfile per accedere al database di proprietà di un nome utente appname, che non ha un equivalente utente Unix. Non ho potuto fare il .pgpasslavoro, fino a quando non ho iniziato a utilizzare deployercome utente per accedere al mio database ...

Ecco il mio /home/deployer/.pgpasscontenuto del file:

*:*:*:deployer:password

Ecco una parte di /etc/postgresql/8.4/main/pg_hba.confquello:

# 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 

Come puoi vedere, tutte le mie connessioni richiedono password ( md5).

Con questa configurazione, supponendo che io abbia un database che ho creato con questo comando:

deployer@ubuntu-server:~$ createdb -T template0 -O deployer -E UTF8 dbname

Sono in grado di eseguire le seguenti operazioni senza inserire una password:

deployer@ubuntu-server:~$ dropdb dbname

Appena ho cambiare il nome del mio .pgpassper .pgpass-no, sarà necessaria una password.

A proposito, non dimenticare che il tuo .pgpassfile deve essere 0600autorizzato:

deployer@ubuntu-server:~$ ls -la .pgpass
-rw------- 1 deployer staff 24 2012-01-06 17:29 .pgpass

2
Puoi controllare l'utente pg che si connette usando la -Ubandiera per dropdbecreatedb
Kevin Horn,

0

1) Crea file .pgpass con contenuto

host: 5432: somedb: someuser: somepass

2) imposta i permessi usando il comando

sudo chmod 600 .pgpass

3) Imposta il proprietario del file come lo stesso utente con cui hai effettuato l'accesso:

sudo chown login_username: login_username .pgpass

4) Impostare la variabile d'ambiente PGPASSFILE:

export PGPASSFILE = '/ home / user / .pgpass'

Ora controlla connettendoti al database:

psql -h host -U somedb utente

Non chiederò la password e mi collegherò a postgresql.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.