Scenario: Hai un sever remoto ( di cui hai il pieno controllo) configurato con una distro Linux su cui è installato, tra le altre cose, anche un server PostgreSQL
Normalmente, per accedere ai dati dei tuoi database gestiti dal server devi:
- effettuare un accesso tramite ssh, per esempio con il comando
ssh -lusername -p22 x.y.z.h
in cui sostituisci a username il nome untente effettivo, a x.y.z.h l'indirizzo IP della tua macchina remota e poi fornisci la password - eseguire il comando sudo psql per collegarti dalla console della macchina remota al server PostgreSQL.
- selezionare il tuo database
- eseguire i comandi SQL che ti interessano
Questo procedimento risulta poco agevole e ti "costringe" a lavorare con la riga di comando, che inorgoglisce i duri e puri ... ma non tutti sono votati al sacrificio e sicuramente qualcuno vorrà lavorare in maniera più comoda.
Se non sei proprio un newby per quanto concerne PostgreSQL, molto probabilmente hai già installato sulla tua macchina locale pgadmin 4, uno dei più comuni client per i server PostgreSQL.
Dato lo scenario descritto, è molto semplice configurare pgadmin 4 in maniera tale da poter accedere al server della tua macchina remota. Di seguito elenco i passi da intraprendere per modificare la configurazione e raggiungere lo scopo.
- Apri pgadmin 4 e clicca su Servers > Register > Server
- nella finestra che si apre inserisci un nome a piacere per il server;
- seleziona la scheda connection: inserisci l'indirizzo IP del server remoto nel campo Host name / Address e la password nel campo Password
Attenzione: nel campo Maintenance database inserire il nome del database remoto che vuoi gestire
Se tenti di collegarti, a meno che tu non abbia già modificato i file di configurazione di PostgreSQL sul server remoto, otterrai il seguente errore:
Passiamo ora alla configurazione del file remoto.
- collegati tramite ssh al tuo server remoto usando come username postgres.
- poi digita
psql nometuodatabase
- digita
SHOW config_file;
(attenzione al punto è virgola finale) otterrai una stringa del tipo: /etc/postgresql/13/main/postgresql.conf che è il file che dovrai modificare.
Attenzione: nella stringa mostrata 13 indica la versione di Postgresql che si sta utilizzando. Potrebbe essere diversa sul tuo server...comunque la procedura è la stessa
- cambia directory con
cd /etc/postgresql/13/main/
e modifica il file postgresql.conf con il tuo editor preferito. - alla fine del file aggiungi la riga:
listen_addresses = '*'
- ultimo tocco: apri con il tuo editor il file pg_hba.conf
- alla fine del file aggiungi la seguente riga:
host all postgres 0.0.0.0/0 md5
- riavvia Postgresql con il comando:
pg_ctlcluster 11 main restart
Se tutto è filato liscio, potrai collegarti al tuo database remoto da pgadmin4
enjoy :-))