Mi è capitato ieri di dover accedere ad un database Postgresql su una macchina dismessa (linux debian) con Postgresql 8.1. Avevo a disposizione solo gli accessi Linux (root) ma non quelli del db.
Ecco come fare per accedere ai dati db, sostanzialmente si edita il file di configurazione permettendo l’accesso al db a utenti generici, una volta dentro si resetta la password o si rimette tutto come prima :
- Accedere alla macchina come root (o come Administrator)
- salvare il file di configurazione accessi del db /etc/postgresql/pg_hba.conf
- editare il file /etc/postgresql/pg_hba.conf
- Io ho impostato le credenziali per accedere a tutti i db da tutti (la macchina era in rete locale ed il db era da buttare ma se il db è in produzione consiglio di leggere sotto alcune restrizioni
- impostare:
- local all all trust
- host all all trust
- Estrarre i dati che servono
- reimpostare il file /etc/postgresql/pg_hba.conf salvato in precedenza
Ecco un estratto delle varie opzioni di configurazione:
# Permette a tutti gli utenti locali di connettersi a tutti i database
# tramite Unix-domain sockets
#
# TYPE DATABASE USER CIDR-ADDRESS METHOD
local all all trust
# La stessa cosa usando una connessione TCP/IP locale (loopback) #
# TYPE DATABASE USER CIDR-ADDRESS METHOD
host all all 127.0.0.1/32 trust
# OPPURE con ip e netmask
host all all 127.0.0.1 255.255.255.255 trust
#Permette a tutti gli utenti di connettersi da un indirizzo IP 192.168.93.x
#al database “postgres” come utente con lo stesso username che ident riporta per
#la connessione (tipicamente lo Unix user name)
#
# TYPE DATABASE USER CIDR-ADDRESS METHOD
host postgres all 192.168.93.0/24 ident sameuser
# Permette a tutti gli utenti di connettersi dal 192.168.12.10 al database
# “postgres” se la password md5 fornita è corretta.
#
# TYPE DATABASE USER CIDR-ADDRESS METHOD
host postgres all 192.168.12.10/32 md5
# In questo caso stiamo negando qualsiasi connessione dal 192.168.54.1 dato che
# capita per prima ma accetta connessioni tramite Kerberos 5 da ogni altro
# indirizzo
#
# TYPE DATABASE USER CIDR-ADDRESS METHOD
host all all 192.168.54.1/32 reject
host all all 0.0.0.0/0 krb5
# Permette agli utenti da 192.168.x.x di connettersi a tutti I db, se
# il controllo ident viene superato. Ad esempio, ident dice che l’utente
# “pippo” e ha richiesto di connettersi come utente PostgreSQL “guest1”, la
# connessione è permessa se c’è un entry in pg_ident.conf per la map
# “omicron” che indica che “pippo” è autorizzato a connettersi come “guest1”.
#
# TYPE DATABASE USER CIDR-ADDRESS METHOD
host all all 192.168.0.0/16 ident omicron