{{{Installare i pacchetti postgresql postgresql-client postgresql-contrib
shell di postgress:
su postgres psql postgres
(in ubuntu: sudo -u postgres psql postgres)

#creare super utente (da valutare)
postgres= create user root with superuser login;

#creare utente
postgres= create user sqlgrey with password 'iehQ6Ffshvta93eP';

#creare database
postgres= create database sqlgrey owner sqlgrey;
eventualmente per settare encoding diverso (default è UTF-8) usare\\
ENCODING = encoding (ad esempio 'ISO8859-1')

#creare schema
postgres= create schema nomeschema;

#abilitare connessioni in entrata
editare /etc/postgresql/8.3/main/postgresql.conf
listen_addresses = '*' 
password_encryption = on

#editare /etc/postgresql/8.3/main/pg_hba.conf (client authentication)
# TYPE     DATABASE  USER    CIDR-ADDRESS          METHOD
local      database  user  auth-method  [auth-option]
host       database  user  CIDR-address  auth-method  [auth-option]
hostssl    database  user  CIDR-address  auth-method  [auth-option]
hostnossl  database  user  CIDR-address  auth-method  [auth-option]
host       database  user  IP-address  IP-mask  auth-method  [auth-option]
hostssl    database  user  IP-address  IP-mask  auth-method  [auth-option]
hostnossl  database  user  IP-address  IP-mask  auth-method  [auth-option]

#auth-method
trust 		accetta connessioni senza pwd
reject 		non accetta connessioni
md5 		MD5-encrypted password for authentication
password 	pwd scambiata in chiaro
krb5 		usa kerberos 5 per autenticare il client
ident		ottiene il nome utente del sistema operativo dal client e controla se è abilitato alla connessione 
ldap 		autentica usando server LDAP
pam		Pluggable Authentication Modules
}}}
!!PROBLEMONE SU ENCODING / LOCALE
Attenzione alla creazione del database con ENCODING ISO-8859-1 per caratteri strani:\\
il problema nasce dal fatto che postgres 8.3 non mi fa cambiare il locale del server se non creando un nuovo cluster con il comando:
%%prettify 
{{{
./initdb --locale=it_IT.ISO-8859-1 -E=LATIN1 -D /var/lib/postgresql/main2
}}}
a questo punto prendo i file sotto main2 e li sposto nella directory di main (/var/lib/postgresql/8.3/main)
ATTENZIONE: ho modificato il file /etc/postgres.conf dove metto la data directory puntare a /var/lib/postgresql/8.3/main !!!

Riassunto:
1- creo nuovo cluster con il locale e l'encoding che voglio
2- faccio partire il demone di postgres utilizzando i file creati al punto 1 


!!Comandi base
settare uno schema(TUOSCHEMA):
%%prettify 
{{{
SET search_path TO TUOSCHEMA,public;
}}}
Connettere a DB:
%%prettify 
{{{
psql -U nomeutente nomedb
}}}
Fare dump di intero sistema:
%%prettify 
{{{
pg_dumpall > allDb.sql
}}}

!!Comandi per backup db
__Dump del db con pg_dump__
%%prettify 
{{{
pg_dump -c --table db2prod.rub -U dbuser -Fc dbname > dbname.dump
}}}
L'opzione -c indica a pg_dump di creare anche le istruzioni per il drop delle tabelle.\\

L'opzione --table serve per indicare di quale tabella fare il backup senza viene fatto il backup dell'intero DB.\\

L'opzione -F serve per il formato output del file (c custom, p plain, t tar).\\

L'opzione -U serve a specificare l'utente con il quale ci si collega al DB.\\

__Restore del db con pg_restore__
%%prettify 
{{{
pg_restore -c -v -U dbuser -Fc -d dbname dbname.dump
}}}
L'opzione -c indica a pg_restore di eliminare le tabelle.\\

L'opzione -v è per il verbose.\\

L'opzione -F serve per il formato input del file (c custom, p plain, t tar).\\

L'opzione -d serve per specificare il dbname.\\

!!Import di dati 
%%prettify 
{{{
copy db2prod.deslun from '/var/lib/postgresql/deslun.txt' using delimiters ',' CSV;
}}}
!!Gestione utenti
loggandosi come utente pgsql postgres faccio alter user:
%%prettify 
{{{
alter user
}}}