2015-02-03 19 views
5

Facendo il freelance, continuo ad ottenere nuovi progetti.Config postgres per accettare qualsiasi combinazione utente/password in modalità sviluppo

Trovo che postgresql config sia molto complicato quando viene utilizzato solo in modalità sviluppo (capisco perfettamente che i requisiti di produzione sono molto diversi).

Quello che voglio ottenere è configurare i miei postgres in modo che qualsiasi sia la modalità nome utente/password/porta/connessione, ha tutti i diritti sul DB (come la sicurezza non importa qui). Lavorando con Rails, tutta la configurazione è in config/database.yml e non voglio modificare nulla dal file stesso.

ho raggiunto avere alcuna autenticazione password_less per ogni connessione (TCP locale e), ma facendo questo:

# /etc/postgresql/9.3/main/pg_hba.conf 
# TYPE DATABASE  USER   ADDRESS     METHOD 
local all    all          trust 
host all    all    0.0.0.0/0    trust 

E:

# /etc/postgresql/9.3/main/postgresql.conf 
listen_addresses = '*' 

Come da questa Post.

Ma se l'utente (es. appname_dev) non esiste, ottengo:

FATAL: role "appname_dev" does not exist 

Questo Post mi permette di creare l'utente in 1 linea, che è giusto (sudo -u postgres createuser -d -R -P appname_dev), ma io piacerebbe davvero che fosse plug and play.

  • Come posso ottenere quello?
  • Non esiste alcuna modalità di installazione di sviluppo su postgres in cui, per impostazione predefinita, le credenziali sarebbero molto più chiare configurate rispetto a quella corrente?
  • Mi mancano alcune best practice che rendono questo non essere un problema?

Capisco che la cosa portuale può essere complicata, ma IMHO, il resto non dovrebbe!

Grazie per l'aiuto!

+0

Sembra che tu voglia [sqlite] (http://www.sqlite.org) eccetto che non è completamente compatibile con postgres a livello SQL. –

+0

SQLite si adatta alla maggior parte dei miei requisiti. Ma quello che mi piacerebbe è un db funzionante, senza dover modificare alcun singolo file di configurazione, il che significa che la scelta di Postgres + Username + Password è già stata fatta, non da me. –

+2

È possibile connettersi solo con utenti esistenti nel database. Non c'è modo di aggirare questo. C'è qualche codice di configurazione dello schema "bootstrap" nel tuo ambiente di sviluppo? È possibile includere lo script 'create user' necessario lì e poiché tutti possono connettersi come superutente, tutti possono eseguire quel codice di bootstrap. –

risposta

0

Si può raggiungere questo obiettivo utilizzando pgbouncer (pooler connessione) con le seguenti impostazioni:

* = host=127.0.0.1 user=postgres 
auth_type = any 

in modo che quando ci si connette a pgbouncer con qualsiasi utente e una password si collegherà a Postgres come utente postgres che ha tutte le autorizzazioni .

Si potrebbe anche voler cambiare la porta del pgbouncer in 5432 (per impostazione predefinita funziona sulla porta 6432) e cambiare la porta di Postgres in qualcosa di diverso in modo che l'applicazione si connetta a pgbouncer senza alcuna modifica nelle configurazioni.