Rifatevi anche al capitolo Installazione Rapida.
Potete usare l'interfaccia grafica 'pgaccess' per creare ed eliminare i database; oppure potete usare la utility a riga di comando 'psql'.
Se siete connessi come root, passate all'utente 'postgres': # xhost + (Per permettere a pgaccess l'accesso al display) bash$ man createdb bash$ createdb miodatabase bash$ man psql bash$ psql miodatabase ..... in psql, premete i tasti freccia su/giù per utilizzare lo storico dei comandi; oppure usate il comando \s bash$ export DISPLAY=<nomehost>:0.0 bash$ man pgaccess bash$ pgaccess miodatabase
Per eliminare il database, eseguite:
bash$ man dropdb bash$ man destroydb (per le versioni precedenti di pgsql) bash$ dropdb <nomedb>
> drop database <nomedb>
Per creare nuovi utenti, effettuate il login come utente unix 'postgres'. Potete usare l'interfaccia grafica 'pgaccess' per creare o eliminare utenti.
(n.d.t.: d'ora in poi ci riferiremo alla versione in lingua italiana di pgaccess, attivabile con la sequenza Database|Preferences|Preferred language italiano|Save; ma accanto, tra parentesi, indicheremo anche i comandi originali in lingua inglese)
bash$ man pgaccess bash$ pgaccess <nome_database>
Potete anche usare script da riga di comando. Usate lo script di shell chiamato 'createuser', che aziona psql
bash$ man createuser bash$ createuser <nomeutente> bash$ createuser -h host -p porta -i userid <nomeutente>
Per eliminare un utente postgres, usate lo script di shell 'destroyuser':
bash$ man dropuser bash$ man destroyuser (per precedenti versioni di pgsql) bash$ destroyuser
Non esiste, per ora, un'interfaccia grafica per impostare i gruppi di utenti. Dovete inserire/aggiornare esplicitamente i gruppi della tabella pg_group. Per esempio:
bash$ su - postgres bash$ psql <nome_database> ..... in psql, premete i tasti freccia su/giù per utilizzare lo storico dei comandi; oppure usate il comando \s psql=> insert into pg_group (groname, grosysid, grolist) psql=> values ('posthackers', '1234', '{5443, 8261}' ); INSERT 58224 psql=> grant insert on foo to group posthackers; CHANGE psql=>
groname - Il nome del gruppo. Questo nome dovrebbe essere puramente alfanumerico; non aggiungetegli caratteri di sottolineatura o di punteggiatura.
grosysid - L'ID del gruppo. Questo è un int4, e dovrebbe essere unico per ogni gruppo.
grolist - La lista degli ID degli utenti che appartengono al gruppo. Questo dato è un int4[].
Per eliminare il gruppo:
bash$ su - postgres bash$ psql <nome_database> ..... in psql, premete i tasti freccia su/giù per utilizzare lo storico dei comandi; oppure usate il comando \s psql=> delete from pg_group where groname = 'posthackers';
Potete usare l'interfaccia grafica 'pgaccess', oppure lo strumento da riga di comando 'psql', per creare, modificare o eliminare una tabella in un database.
bash$ man pgaccess bash$ pgaccess <nome_database>
bash$ man psql bash$ psql <nome_database> ..... in psql, premete i tasti freccia su/giù per utilizzare lo storico dei comandi; oppure usate il comando \s
Potete usare l'interfaccia grafica 'pgaccess', oppure il tool da riga di comando 'psql', per creare, modificare od eliminare record nella tabella di un database.
bash$ man pgaccess bash$ pgaccess <nome_database>
bash$ man psql bash$ psql <nome_database> ..... in psql, premete i tasti freccia su/giù per utilizzare lo storico dei comandi; oppure usate il comando \s
Potete usare l'interfaccia grafica 'pgaccess', oppure il tool da riga di comando 'psql', per cambiare il database attivo.
bash$ man pgaccess bash$ pgaccess <nome_database>
bash$ man psql bash$ psql <nome_database> ..... in psql, premete i tasti freccia su/giù, per utilizzare lo storico dei comandi; oppure usate il comando \s psql=> connect <nome_database> <utente>
PostgreSQL fornisce due programmi di utilità per salvare una copia di sicurezza (backup) del vostro sistema: pg_dump per fare il backup di database individuali, e pg_dumpall per fare il backup di tutto il database in un colpo solo.
bash$ su - postgres bash$ man pd_dump bash$ pd_dump <nome_database> > nome_database.pgdump Per scaricare il dump di tutti i database: bash$ man pg_dumpall bash$ pg_dumpall -o > db_all.out Per ricaricare (ripristinare) un database scaricato con pg_dump: bash$ cat nome_database.pgdump | psql <nome_database> Per ricaricare (ripristinare) tutti i database scaricati con pg_dump: bash$ psql -e template1 < db_all.out
ATTENZIONE: Di ogni database si dovrebbe fare il backup in maniera regolare. PostgreSQL gestisce autonomamente i suoi file, all'interno del file system. Per questo motivo, per fare i backup dei vostri database, non è consigliabile affidarsi ai soli sistemi di backup del file system; non c'è garanzia che i file saranno utilizzabili e in uno stato coerente, dopo il ripristino.
BACKUP DI DATABASE ESTESI: Poiché PostgreSQL ammette tabelle più grandi della dimensione massima dei file sul vostro file system, può essere problematico scaricare la tabella in un file, perché il file risultante sarà probabilmente più grande della dimensione massima ammissibile sul vostro sistema. Nel momento in cui pg_dump scrive su stdout, potete usare solo gli strumenti standard di unix per aggirare questo possibile problema: scaricate il database utilizzando la compressione:
bash$ pg_dump <nome_database> | gzip > nomefile.dump.gz Ricaricate con: bash$ createdb <nome_database> bash$ gunzip -c nomefile.dump.gz | psql <nome_database> Oppure bash$ cat nomefile.dump.gz | gunzip | psql <nome_database> Uso di split: bash$ pg_dump <nome_database> | split -b 1m - nomefile.dump. Nota: C'è un punto (.) dopo nomefile.dump, nel comando sopra riportato!! Potete ricaricare con: bash$ man createdb bash$ createdb <nome_database> bash$ cat nomefile.dump.* | pgsql <nome_database>
Backup di oggetti ESTESI: Gli oggetti estesi non vengono gestiti da pg_dump. La directory contrib/pg_dumplo, dell'albero dei sorgenti di Postgres, contiene un programma che può farlo.
BACKUP DEL FILESYSTEM: Potete usare gli strumenti e i comandi del Sistema Operativo Linux per effettuare il backup dell'intero database. Ma prima di usare questo metodo, per fare il backup o il ripristino, dovete bloccare del tutto il server database postgresql. Il backup o il ripristino del filesystem può essere da 2 a 3 volte più rapido dell'esecuzione del comando pg_dump, con il solo svantaggio che si deve bloccare del tutto il server database. È altamente raccomandabile l'uso di strumenti di backup e ripristino come Arkeia, Bru. Questi strumenti vengono forniti nella sotto-intestazione "Backup and Restore Utility" della lista di analogie Mic-Lin presso http://aldev.8m.com, e i cui siti mirror sono: webjump, angelfire, geocities, virtualnet, bizland, theglobe, spree, infoseek, bcity, 50megs I comandi del SO da impiegare sono:
bash$ man tar bash$ tar -cvf backup.tar /usr/local/pgsql/data oppure, impiegando la compressione bash$ tar -zcvf backup.tgz /usr/local/pgsql/data
BACKUP INCREMENTALE: Questa funzionalità è elencata nella lista delle cose da fare (todo), e apparirà nei futuri rilasci di PostgreSQL.
Vedere il capitolo in Protezione di PostgreSQL.
È molto importante che impariate ad usare l'aiuto in linea di PostgreSQL, poiché vi risparmierà molto tempo e vi consentirà un rapidissimo accesso alle informazioni.
Leggete le pagine di manuale in linea sui vari comandi come createdb, createuser, ecc..
bash$ man createdb
Leggete anche l'aiuto in linea di psql, digitando \h al prompt di psql
bash$ psql miodatabase psql> \h Suggerimento: in psql, premete i tasti freccia su/giù per utilizzare lo storico dei comandi; oppure usate il comando \s
Per creare trigger o stored procedure, si deve prima installare 'plpgsql' nel particolare database che state usando, eseguendo lo script 'createlang'. Se volete che il vostro database sia quello predefinito, installate 'plpgsql' nel 'template1', così i database creati saranno cloni del template1. Leggete la pagina web di 'createlang', e precisamente la guida dell'Utente presso /usr/doc/postgresql-7.0.2/user/index.html.
bash$ man createlang bash$ createdb miodb bash$ export PGLIB=/usr/lib/pgsql bash$ createlang plpgsql miodb bash$ createlang plpgsql template1
create function tg_pfield_au() returns opaque as ' begin if new.name != old.name then update PSlot set pfname = new.name where pfname = old.name; end if; return new; end; ' language 'plpgsql'; create trigger tg_pfield_au after update on PField for each row execute procedure tg_pfield_au();
create trigger check_fkeys_pkey_exist before insert or update on fkeys for each row execute procedure check_primary_key ('fkey1', 'fkey2', 'pkeys', 'pkey1', 'pkey2');
Potete installare anche il pacchetto di TEST: postgresql-test-7.0.2-2.rpm, e potete leggere gli esempi di script sql posti in /usr/lib/pgsql/test/regress/sql
Per vedere la lista di trigger nel database, digitate:
bash$ psql miodb psql=> \? psql=> \dS psql=> \d pg_trigger psql=> select tgname from pg_trigger order by tgname;
Per leggere la lista di funzioni e stored procedure nel database, digitate:
bash$ psql miodb psql=> \? psql=> \dS psql=> \d pg_proc psql=> select proname, prosrc from pg_proc order by proname; psql=> \df
Per altre domande, leggete gli eccellenti manuali di PostgreSQL, molto approfonditi. La documentazione di PostgreSQL è distribuita insieme al pacchetto. Leggete le guide 'User's Guide', 'Programmer's Guide', 'Administrator's Guide', e gli altri manuali. I documenti dei rilasci sono reperibili presso http://www.postgresql.org/users-lounge/docs.