Configurazione del file pg_hba.conf per consentire l'accesso da altri server al database


15

Ho un database Postgres su un server e ho bisogno di accedervi da un altro server.

Devo modificare il file pg_hba.conf, ma ora ho idea di quali sono i passaggi per modificare questo file. Server Centos

Devo aggiungere la seguente riga nel file

host    all         all         10.0.2.12         255.255.255.255   trust

L'ho trovato dentro var/lib/pgsql/data/

Ora in pratica non sono sicuro di quali siano i passaggi corretti per farlo

Risposte:


14

Per prima cosa prendi una copia di backup del pg_hba.conf dato

sudo tar cvf /var/tmp/mybackup_pg_hba_conf.tar /var/lib/pgsql/data/pg_hba.conf

In questo modo hai la versione precedente pronta se rovini. Una bella caratteristica dell'archivio tar è che conserva permessi e directory. Quindi quando pg_hba.conf viene interrotto oltre il riconoscimento. Puoi:

cd /
sudo tar xvf /var/tmp/mybackup_pg_hba_conf.tar

Ciò ripristinerà il backup pg_hba.conf dall'archivio creato in precedenza.

Per quanto riguarda l'inserimento effettivo della linea:

sudo su -c 'echo "host    all         all         10.0.2.12         255.255.255.255   trust" >> /var/lib/pgsql/data/pg_hba.conf'

(NOTA: comando modificato. Grazie bortzmeyer!)

Dovrebbe farlo. Si noti che questo aggiunge semplicemente la riga a pg_hba.conf. Se mai hai bisogno di cambiarlo devi usare un vero editor. Come vi. La curva di apprendimento può essere un po 'ripida, ma dopo aver appreso almeno le basi dovresti essere abbastanza sicuro in quasi tutti gli ambienti unix che incontri.

Ora che sono tornato in pista, dovresti provare a riavviare il tuo database postgresql. Su una macchina Centos questo credo sia fatto da:

sudo service postgresql restart

oppure puoi semplicemente ricaricare la configurazione senza riavviare:

su - postgres
pg_ctl reload

Ora dovresti essere in grado di accedere al database postrgresql di Centos-machines dal 10.0.2.12


1
Il sudo nell'ultimo comando non funzionerà poiché l'operazione privilegiata viene eseguita da un reindirizzamento, che viene gestito dalla shell, non dal programma eseguito con sudo (echo, in questo caso).
bortzmeyer,

Buon punto! Dovrebbe essere scritto come sudo "echo" host all 10.0.2.12 255.255.255.255 trust '>> /var/lib/pgsql/data/pg_hba.conf "
pyhimys,

Il modo ideale sarebbe quello di metterlo sotto il controllo della versione in una posizione di amministrazione e distribuirlo dopo averlo modificato tramite SSH ecc.
vfclists,

1
Il percorso predefinito del file pg_hba.conf è leggermente diverso in 9.4: /var/lib/pgsql/9.4/data/pg_hba.conf.
Sergey Vlasov,

13

Non dimenticare di modificare postgresql.conf e cambiare / aggiungere riga

listen_addresses = '*'

Postgresql di default ascolta localhost


Il tuo esempio list_addresses non è troppo permissivo? Questo è un buco di sicurezza spalancato se il server funziona su più IP, ad esempio pubblico, interno, VPN ecc.
vfclists
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.