Introduzione

PostgreSQL è un potente sistema di gestione di database relazionali ad oggetti, fornito sotto una licenza flessibile in stile BSD. PostgreSQL contiene molte funzionalità avanzate, è molto veloce e conforme agli standard.

PostgreSQL ha collegamenti per molti linguaggi di programmazione come C, C++, Python, Java, PHP, Ruby… Può essere utilizzato per alimentare qualsiasi cosa, da semplici applicazioni web a enormi database con milioni di record.,

Installazione client

Se si desidera solo connettersi a un server PostgreSQL esterno, non installare il pacchetto PostgreSQL principale, ma installare il pacchetto client PostgreSQL. Per fare ciò, utilizzare il seguente comando

 sudo apt-get install postgresql-client

quindi ci si connette al server con il seguente comando

 psql -h server.domain.org database user

Dopo aver inserito la password si accede a PostgreSQL con comandi di linea., Si può, per esempio, inserire il seguente

 SELECT * FROM table WHERE 1;

È uscita la connessione con

 \q

Installazione

Per installare il server in locale, utilizzare la riga di comando e digitare:

 sudo apt-get install postgresql postgresql-contrib

in Questo modo, installare la versione più recente disponibile nella vostra versione di Ubuntu e comunemente utilizzato add-ons per esso.

Vedi “Collegamenti esterni” di seguito per le opzioni per ottenere nuove versioni.,

Installazione di PostGIS, linguaggi procedurali, interfacce client, ecc

Pacchetti aggiuntivi contengono runtime del linguaggio procedurale, componenti aggiuntivi come PostGIS, interfacce client del linguaggio come psycopg2 per Python, ecc. È possibile ottenere un elenco con:

 apt-cache search postgres

Amministrazione

pgAdmin III è una comoda GUI per PostgreSQL, è essenziale per i principianti. Per installarlo, digitare alla riga di comando:

 sudo apt-get install pgadmin3

Si può anche utilizzare il gestore pacchetti Synaptic dal menu di amministrazione di Sistema>per installare questi pacchetti.,

Configurazione di base del server

Per iniziare, dobbiamo impostare la password dell’utente PostgreSQL (ruolo) chiamato “postgres”; altrimenti non saremo in grado di accedere al server esternamente. Come utente Linux locale “postgres”, siamo autorizzati a collegare e manipolare il server utilizzando il comando psql.

In un terminale, digitare:

sudo -u postgres psql postgres

questo si connette come un ruolo con lo stesso nome dell’utente locale, cioè “postgres”, al database chiamato “postgres” (1 ° argomento per psql).,

Imposta una password per il ruolo del database “postgres” usando il comando:

\password postgres

e fornisci la tua password quando richiesto. Il testo della password verrà nascosto dalla console per motivi di sicurezza.

Digitare Control + D o \ q per uscire dal prompt posgreSQL.

Crea database

Per creare il primo database, che chiameremo “mydb”, è sufficiente digitare:

 sudo -u postgres createdb mydb

Installa Strumentazione server (per PgAdmin) per Postgresql 8.4 o 9.3

PgAdmin richiede l’installazione di un componente aggiuntivo per la piena funzionalità., L’addon “adminpack”, che chiama Server Instrumentation, fa parte di postgresql-contrib, quindi è necessario installare quel pacchetto se non l’hai già fatto:

 sudo apt-get install postgresql-contrib

Quindi per attivare l’estensione, per “” Postgresql 8.4″”, eseguire il adminpack.script sql, basta digitare:

 sudo -u postgres psql < /usr/share/postgresql/8.4/contrib/adminpack.sql

Per “Postgresql 9.3″+ installare l ‘ “estensione” adminpack nel database “postgres”:

 sudo -u postgres psql CREATE EXTENSION adminpack;

Configurazione alternativa del server

Se non si intende connettersi al database da altre macchine, questa configurazione alternativa potrebbe essere più semplice.,

Per impostazione predefinita in Ubuntu, Postgresql è configurato per utilizzare l’autenticazione ‘ident sameuser’ per qualsiasi connessione dalla stessa macchina. Controlla l’eccellente documentazione Postgresql per ulteriori informazioni, ma essenzialmente questo significa che se il tuo nome utente Ubuntu è ‘ foo ‘e aggiungi’ foo ‘ come utente Postgresql, puoi connetterti al database senza richiedere una password.,

Dal momento che l’unico utente in grado di connettersi a una nuova installazione è l’utente postgres, ecco come creare un account di database (che è anche in questo caso di una banca dati di superuser) con lo stesso nome come nome di login e quindi creare una password per l’utente:

 sudo -u postgres createuser --superuser $USER sudo -u postgres psql
 postgres=# \password $USER

programmi Client, per impostazione predefinita, connettersi all’host locale utilizzando il vostro nome di login di Ubuntu e si aspettano di trovare un database con lo stesso nome anche., Quindi, per rendere le cose molto facili, utilizzare il nuovo superuser privilegi concessi, per creare un database con lo stesso nome come nome di login:

 sudo -u postgres createdb $USER

Collegare al proprio database di provare alcuni SQL ora dovrebbe essere più facile:

 psql

Creazione di un database aggiuntivo è facile, quindi, per esempio, dopo l’esecuzione di questo:

 create database amarokdb;

Si può andare a destra avanti e diciamo Amarok di utilizzare postgresql per memorizzare il suo catalogo di musica., Il nome del database sarebbe amarokdb, il nome utente sarebbe il tuo nome di accesso e non hai nemmeno bisogno di una password grazie a ‘ident sameuser’ in modo da poter lasciare vuoto.

Usando pgAdmin III GUI

Per avere un’idea di cosa può fare PostgreSQL, puoi iniziare attivando un client grafico. In un tipo di terminale:

 pgadmin3

Ti verrà presentata l’interfaccia pgAdmin III. Fare clic sul pulsante “Aggiungi una connessione a un server” (in alto a sinistra). Nella nuova finestra di dialogo, inserisci l’indirizzo 127.0.0.1 (l’host locale è predefinito, quindi può essere lasciato fuori.,), una descrizione del server, il database predefinito (“mydb”nell’esempio sopra), il tuo nome utente (“postgres”) e la tua password. È necessario un altro passaggio per consentire a pgAdmin III di connettersi al server, ovvero modificare pg_hba.file conf e modificare il metodo di autenticazione da peer to md5 (non funziona se non è stata impostata la password):

sudo nano /etc/postgresql/9.3/main/pg_hba.conf

e modificare la riga

# Database administrative login by Unix domain socketlocal all postgres peer

# Database administrative login by Unix domain socketlocal all postgres md5

Ora si deve ricaricare il server le modifiche di configurazione e connessione pgAdmin III per il database PostgreSQL server.,

sudo /etc/init.d/postgresql reload

Con questa GUI puoi iniziare a creare e gestire database, interrogare il database, eseguire SQl ecc.

Gestione del server

Per saperne di più sulla gestione di PostgreSQL (ma senza le specifiche di Ubuntu) vedere la documentazione ufficiale di PostgreSQL

Gestione degli utenti e dei diritti

La gestione degli utenti è discussa in dettaglio nel capitolo autenticazione client della documentazione di PostgreSQL; la seguente è un’introduzione per iniziare.

Per gestire gli utenti, devi prima modificare /etc/postgresql/current/main/pg_hba.,conf e modificare la configurazione predefinita che è molto bloccato e sicuro. Ad esempio, se vuoi che postgres gestisca i propri utenti (non collegati con gli utenti di sistema), aggiungerai la seguente riga:

8<-------------------------------------------# TYPE DATABASE USER IP-ADDRESS IP-MASK METHODhost all all 10.0.0.0 255.255.255.0 md58<-------------------------------------------

Il che significa che sulla tua rete locale (10.0.0.0/24 – sostituisci con la tua rete locale !), gli utenti postgres possono connettersi attraverso la rete al database fornendo una coppia classica utente / password.

Oltre a consentire a un utente di connettersi in rete a un database sul server, è necessario abilitare PostgreSQL per l’ascolto su reti diverse., Per farlo, apri / etc / postgresql / current / main / postgresql.conf nel tuo editor preferito e modifica gli listen_addresses come di seguito:

listen_addresses = '*'

per ascoltare su tutte le interfacce di rete. Vedere i documenti per listen_addresses per altre opzioni.

Per creare un database con un utente che ha diritti completi sul database, utilizzare il seguente comando:

sudo -u postgres createuser -D -A -P myusersudo -u postgres createdb -O myuser mydb

La prima riga di comando crea l’utente senza diritti di creazione del database (-D) senza aggiungere diritti utente-A) e ti chiederà di inserire una password (-P)., La seconda riga di comando crea il database ‘mydb con’ myuser ‘ come proprietario.

Questo piccolo esempio probabilmente si adatta alla maggior parte delle tue esigenze. Per maggiori dettagli, consultare le pagine man corrispondenti o la documentazione online.

riavvio del server

Dopo aver configurato la rete / utenti potrebbe essere necessario ricaricare il server, ecco un comando suggerito per farlo.

sudo /etc/init.d/postgresql reload

Alcune modifiche alle impostazioni in postgresql.,conf richiede un riavvio completo, che interromperà le connessioni attive e interromperà le transazioni senza commit:

sudo /etc/init.d/postgresql restart

Ulteriori letture

Se non hai familiarità con SQL potresti voler esaminare questo potente linguaggio, anche se alcuni semplici usi di PostgreSQL potrebbero non richiedere questa conoscenza (come un semplice progetto Django).

Il sito web di PostgreSQL contiene numerose informazioni sull’utilizzo di questo database. In particolare, il tutorial è un utile punto di partenza, ma è possibile saltare la fase di installazione come hai già installato utilizzando i pacchetti di Ubuntu.,

Risoluzione dei problemi

fe_sendauth: nessuna password fornita

Il tuo pg_hba.conf specifica che l’autenticazione md5 deve essere utilizzata per questa connessione in base all’host di origine, al metodo di connessione e al nome utente/database richiesto, ma l’applicazione non ha fornito una password.

Modificare la modalità di autenticazione o impostare una password per l’utente a cui ci si connette e quindi specificare tale password nelle impostazioni di connessione dell’applicazione.,

FATAL: il ruolo “myusername” non esiste

Per impostazione predefinita PostgreSQL si connette all’utente PostgreSQL con lo stesso nome dell’utente unix corrente. Non è stato creato un utente PostgreSQL con quel nome nel database.

Crea un utente adatto o specifica un nome utente diverso con cui connettersi. Negli strumenti della riga di comando il flag-U fa questo.

FATAL: il database “myusername” non esiste

Esiste un utente chiamato “myusername”, ma non esiste un database con lo stesso nome.,

Per impostazione predefinita PostgreSQL si connette al database con lo stesso nome dell’utente con cui si sta connettendo, ma non crea automaticamente il database se non esiste.

Creare il database o specificare un database diverso a cui connettersi.

FATAL: Autenticazione peer non riuscita per l’utente “myusername”

Ci si connette a localhost tramite un socket unix. Un utente chiamato “myusername” esiste, ma il tuo attuale utente Unix non è lo stesso di quel nome utente., PostgreSQL è impostato per utilizzare l’autenticazione “peer” su socket unix per questa combinazione utente/db, quindi richiede che i nomi utente unix e postgresql corrispondano.

Connettiti dall’utente unix che corrisponde all’utente PostgreSQL desiderato – forse con sudo-u il nome utente psql – o cambia pg_hba.conf per utilizzare una modalità di autenticazione diversa come ” md5 ” per questo nome utente.,

impossibile connettersi al server: No such file or directory

Un errore come questo (possibilmente con un diverso socket unix percorso, a seconda della vostra installazione):

 psql: could not connect to server: No such file or directory Is the server running locally and accepting connections on Unix domain socket "/tmp/.s.PGSQL.5432"?

può significare un certo numero di cose:

* Il server non è in esecuzione;

* Il server ha un diverso unix_socket_directories di default nel vostro client libpq, sia a causa di diversi parametri di default o non corrispondenti impostazione;

* Il server è in ascolto su una diversa “porta”., PostgreSQL emula le porte TCP / IP sui socket unix utilizzando il numero di porta come suffisso per il file socket, ad esempio 5432.

Elimina questi a turno.

Per prima cosa assicurati che il server sia in esecuzione. Su Ubuntu, ps-u postgres-f ti mostrerà tutti i processi in esecuzione come postgres dell’utente-vuoi vedere più processi denominati postgres.

Ora assicurati che il server stia ascoltando dove il tuo cliente pensa che sia. Per scoprire la directory socket del tuo server PostgreSQL:

 sudo -u postgres psql -c "SHOW unix_socket_directories;"

o su versioni precedenti di PostgreSQL, unix_socket_directory come parametro ha cambiato nome., Per mostrare la porta del server (che vale sia per i socket TCP/IP che per unix):

 sudo -u postgres psql -c "SHOW port;"

Se non riesci nemmeno a connetterti con psql sotto unix user postgres puoi controllare la socket dir con lsof:

 $ sudo lsof -U -a -c postgres COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME postgres 6565 postgres 5u unix 0xffff88005a049f80 0t0 183009 /tmp/.s.PGSQL.5432 postgres 6566 postgres 1u unix 0xffff88013bc22d80 0t0 183695 socket postgres 6566 postgres 2u unix 0xffff88013bc22d80 0t0 183695 socket

In questo caso la prima riga è la posizione del socket. Questo server ha socket directory / tmp con porta 5432.,

Se il tuo client sta cercando in una directory socket diversa, probabilmente stai cercando di connetterti su socket unix al percorso socket predefinito e/o alla porta predefinita, e il libpq a cui è collegata l’applicazione client ha un percorso socket unix compilato e/o una porta diversa dal tuo PostgreSQL in esecuzione. Molto probabilmente il tuo LD_LIBRARY_PATH o / etc / ld.so.conf ha un libpq diverso prima di quello fornito con la tua versione di PostgreSQL. Questo generalmente non importa molto, puoi semplicemente sovrascrivere la directory socket.,

Per specificare un’alternativa presa directory e/porta porta per la connessione, specificare il socket dir come il parametro host in le opzioni di connessione, ad esempio, per connettersi come utente bob per il server in ascolto in /tmp sulla porta 5433:

 psql -h /tmp -p 5433 -U bob ...

o nella stringa di connessione del modulo:

 psql "host=/tmp port=5433 user=bob ..."

La stessa cosa funziona con qualsiasi client che utilizza libpq (tutti i PostgreSQL client strumenti, ad esempio psycopg2, la gemma Pg in Ruby/Rails, PHP postgres e DOP, Perl DBB::Pg, ecc)., NON funziona con client non libpq come PgJDBC, py-postgresql, ecc., ma la maggior parte di questi non supporta affatto i socket unix. Vedere la documentazione del client per i client non basati su libpq.

Download ufficiali di PostgreSQL

Il progetto PostgreSQL fornisce un elenco ufficiale delle posizioni di download, incluso un repository software Ubuntu, nella sua pagina di download. In particolare, gli utenti di Ubuntu possono ottenere versioni PostgreSQL più recenti di quelle confezionate nella loro versione di Ubuntu utilizzando apt-get via apt.postgresql.org.

Per il supporto e i servizi relativi a PostgreSQL, vedere la pagina servizi e supporto.,

EnterpriseDB

La pagina dei download di PostgreSQL Linux contiene una sezione su “Installer grafico” creato da EnterpriseDB. Si scarica il programma di installazione, modificare le sue proprietà per consentire di eseguirlo come comando (ha .esegui estensione) ed eseguilo dal prompt dei comandi come in ” sudo whateveritwas.eseguire”.

Si finisce con

  • configurata istanza del server DB, che inizia con il server
  • pgAdmin III UI applicazione client

Si noti che il software installato non sarà integrato con Ubuntu software center., Di conseguenza, non riceverai alcun aggiornamento di sicurezza da Ubuntu. Tuttavia, la versione installata corrisponderà strettamente all’ultima versione di Ubuntu.

Linux chiavi in mano

Un PostgreSQL appliance basato su Ubuntu è uno dei modi più semplici per ottenere installato e funzionante con PostgreSQL su Ubuntu. Fa parte di una famiglia di appliance software Linux chiavi in mano pre-integrate basate su Ubuntu 10.04.1 (Lucid LTS).