2013-07-23 9 views
5

Sto configurando un'applicazione Rails su una nuova installazione di Ubuntu e creato i database Postgres usando rake db: create: all. In databases.yml, il campo password per tutti i database è vuoto. Sto provando a fare un pg_restore di un dump che ho catturato dalla distribuzione di produzione dell'app, ma continuo a ricevere una password. Ho la sensazione che questo sia qualcosa a che fare con le impostazioni nel file pg_hba.conf, ma non riesco a ricordare come li avevo impostati nella mia precedente installazione di Ubuntu. In che modo Postgres si fida di pg_restore per le connessioni locali? O c'è qualcosa di diverso che causa questo problema?pg_restore chiede la password per il database quando non ce n'è uno

risposta

9

Set trust (o peer se si desidera far corrispondere i nomi utente PostgreSQL a Unix nomi utente) per local collegamenti in pg_hba.conf. Hai praticamente risposto alla tua domanda.

Se stai specificando esplicitamente -h localhost allora si sta utilizzando il protocollo TCP/IP, è necessario omettere -h localhost, utilizzare -h /tmp o dovunque il tuo unix_socket_directory è configurato per vivere, o impostare trust per host connessioni da 127.0.0.1/32 in pg_hba.conf pure.

Vedere pg_hba.conf e client authentication.

+0

Grazie, questo ha risolto il mio problema –

+0

Non dimenticate di riavviare il servizio Postgre dopo questo. – bdavidxyz

0

Una soluzione alternativa potrebbe essere quella di memorizzare le credenziali di accesso sulla macchina client in un file .pgpass nella home directory degli utenti:

localhost: *: database: username: password

Le autorizzazioni per questo il file deve essere almeno 0600 o verrà ignorato.

http://www.postgresql.org/docs/9.2/interactive/libpq-pgpass.html