[RISOLTO] Far comunicare un database PostGIS ed il web service deegree

5 risposte [Ultimo messaggio]
Ritratto di Alextave
Alextave
(Junior)
Offline
Junior
Iscritto: 23/01/2012
Messaggi: 13

Buon pomeriggio a tutti, come tesi di laurea triennale devo fare un'applicazione web per basi di dati geografiche. Il professore mi ha detto di creare il database usando PostGIS (un'estensione di PostgreSQL) e di usare il web-service deegree. Ho creato il database (chiamato provagdb) ma non riesco a connetterlo a deegree, questo è l'errore:
Connection 'provagdb' unavailable: FATALE: autenticazione Ident fallita per l'utente "postgres"

Per connettere il database deegree mi chiede queste info sul database:

DB type: PostGIS
Host: localhost
Port: 5432
DB Name: provagdb
Username: postgres
Password: -password-
jdbc URL: jdbc:postgresql://localhost:5432/provagdb

Dopo aver completato così questi campi testo la connessione e mi esce l'errore che vi ho detto prima.
Il problema sta nello username e nella password?

Quando ho installato PostGIS e PostgreSQL con YaST ho aggiunto l'utente andrea al gruppo postgres. Per usare PostgreSQL e PostGIS faccio così:
# /etc/init.d/postgresql start
# su postgres
$ psql provagdb
provagdb è il nome del database.

Quando scrivo "su postgres" non mi viene chiesta nessuna password, nemmeno quando uso psql non mi viene chiesta una password.
Ho provato ad impostarne una usando:
ALTER USER postgres WITH PASSWORD 'nome-password';
ma nonstante ciò se non uso psql provagdb --password questa password non mi viene chiesta, anzi anche se ne scrivo una sbagliata entro lo stesso nel database provagdb.

Dato che deegree mi chiede una password dell'utente del database come faccio a settarne una che funzioni?
Come si fa per impostare correttamente un utente per postgres? Forse ho sbagliato pure quello...

Ritratto di Templare
Templare
(Collaboratore)
Offline
Collaboratore
Iscritto: 28/10/2011
Messaggi: 747

Purtroppo mi cogli impreparato.

Tuttavia, credo sia una soluzione che può darti qualcuno che conosce bene non tanto openSUSE, quanto Postgresql. Hai provato a chiedere su qualche forum che tratta postgresql?

Assemblato 1: Phenom II X4 965 Black Edition + AMD Radeon HD 5770 + Scheda Madre Asus Crosshair IV Formula + Scheda Audio Asus Xonar D2X. Sistema Windows 7 Ultimate 64 Bit
Assemblato 3: Intel Core i3 3220 + nVIDIA Geforce 640 GT. Sistema openSUSE 13.1 64 bit GNOME

Ritratto di Alextave
Alextave
(Junior)
Offline
Junior
Iscritto: 23/01/2012
Messaggi: 13

No, non ho provato mi sono rivolto direttamente qui. Ora cerco ancora di risolvere il problema, se riesco vi posto qui la soluzione che ho trovato.

Ritratto di Alextave
Alextave
(Junior)
Offline
Junior
Iscritto: 23/01/2012
Messaggi: 13

Bene penso di aver trovato una soluzione.
Ho girovagato un po' internet e ho letto un po' di guide su openSUSE, praticamente commettevo due errori:
-Non davo una password all'utente postgres
-Il JDBC di postgres forse era nel posto sbagliato

Per rimediare la password su postgres ho fatto così:
Ho avviato i servizi di postgres
# /etc/init.d/postgresql start

Ho cambiato l'utente, da andrea a postgres
# su postgres

sono entrato in postgres
psql

Questo è il comando per impostare una nuova password
\password

E ho scritto la nuova password. Poi ho modificato il file pg_hba.conf che regola le modalità di accesso a postgres. Questo file io l'ho trovato in /var/lib/pgsql/data/, la colonna METHOD determina il tipo di accesso, se si scrive "password" allora viene chiesta la password, impostata con  \password, per accedere a psql.
cd /var/lib/pgsql/data/
vim pg_hba.conf
Questo è il file che ho io:

# TYPE  DATABASE        USER            ADDRESS                 METHOD
# "local" is for Unix domain socket connections only
local   all             all                                     password
# IPv4 local connections:
host    all             all             127.0.0.1/32            password
# IPv6 local connections:
host    all             all             ::1/128                 password

E così la password è stata impostata correttamente e mi viene chiesta ogni volta.

Riguardo al JDBC non so se quello che ho fatto sia necessario, comunque lo scrivo lo stesso.
Ho installato il pacchetto postgresql-jdbc e con YaST ho visto che il .jar del JDBC postgresql-jdbc-9.2.jar è stato installato in /usr/share/java/. Questa però non è la mia cartella del JRE perchè ho dovuto installare la JVM di Oracle e non la versione open (quella proprietaria era fortemente richiesta da deegree).
Ho seguito questa guida http://it.opensuse.org/SDB:Installare_Java per installare la JVM di Oracle ed ora il mio JRE è nella cartella /usr/lib64/jvm/java/jre.
Quindi ho copiato postgresql-jdbc-9.2.jar in /usr/lib64/jvm/java/jre.

Dopo aver fatto questo tutto funziona, deegree ed il mio database con PostGIS sono collegati.
Ditemi se questa può essere una buona soluzione e se quello che ho fatto con il JDBC è necessario.

Alextave

Ritratto di Templare
Templare
(Collaboratore)
Offline
Collaboratore
Iscritto: 28/10/2011
Messaggi: 747

Grazie molte per il tuo contributo e per il tuo tempo

Assemblato 1: Phenom II X4 965 Black Edition + AMD Radeon HD 5770 + Scheda Madre Asus Crosshair IV Formula + Scheda Audio Asus Xonar D2X. Sistema Windows 7 Ultimate 64 Bit
Assemblato 3: Intel Core i3 3220 + nVIDIA Geforce 640 GT. Sistema openSUSE 13.1 64 bit GNOME

Ritratto di mauriziod
mauriziod
(Guru)
Offline
Guru
Iscritto: 01/06/2009
Messaggi: 1687

Come programmatore mi sembra che tutto sia ok!

Grazie della soluzione! Lo sai che puoi fare un blog gratis qui? Wink
Potresti metterci i tuoi sviluppi/soluzioni che potranno servire per altri. Big Grin
Inoltre tenere un diario permette di non perdere il filo di quello che si fa.

SO: Linux desktop Sistema: OpenSUSE Leap 15.1 (64bit) KDEE 5.12
SO: Linux desktop Sistema: OpenSUSE Tumbleweed (64bit) KDE 5
Miao