Si tratta di un ottimo serer database, completamente sotto licenza GPL, molto leggero con ottime prestazioni, e ricco di caratteristiche che lo avvicinano al database relazionale di casa Oracle.
Una volta installato postgresql, dare:
su – pgsql initdb createdb
avviare il server con uno dei seguenti comandi (dipendono dal sistema operativo):
postgres -D /usr/local/pgsql/data pg_ctl -D /usr/local/pgsql/data -l logfile start /usr/local/etc/rc.d/postgresql start
psql e' la cli tramite la quale si controlla il nostro db postgresql, i comandi basilari sono:
Per aggiungere utenti si usa:
createuser nomeutente
da utente pgsql. Oppure si puo' usare:
CREATE ROLE nomeutente OPZIONI
Opzioni disponibili:
LOGIN: Abilita il login per l'utente SUPERUSER: Ha i privilegi di amministratore CREATEDB: Puo' creare db CREATEROLES: puo' creare altri utenti WITH PASSWORD 'password': Setta la password
Per abilitare le connessioni dall'esterno devo editare il file postgresql.conf nella cartella creata da postgresql. E decommentare (editandole opportunamente le seguenti linee:
listen_addresses = '*' port = 5432
Queste modifiche richiedono il riavvio del server.
Ecco alcuni parametri utili per la cli psql:
–d dbname ''Permette di accedere al db chiamato dbname'' –f nomefile per leggere le queries direttamente da un file –U nomeutente per far autenticare un utente
Per permetter ad host remoti di autenticarsi al db devo editare il file pg_hba.conf (Il percorso dipende sempre dal sistema operativo, normalmente una in una sottocartella di /etc) e aggiungere una linea simile a:
host all all 192.168.1.1/24 trust
Il formato generico e' il seguente:
host DATABASE USER IP/NETMASK METHOD
L'inserimento dei dati avviene nella seguente maniera:
INSERT INTO tab1 VALUES ('value1','value2',...,'valuen');
Per creare una tabella con la chiave autoincrementante:
CREATE TABLE nomeTabella ( id SERIAL PRIMARY KEY, ....);
Per inserire solo alcuni campi in una tabella:
INSERT INTO tab1 (campo1,campo2,...) VALUES(val1,val2,...);
Si trova nella cartella:
/etc/postgresql/VER/main/
Una linea tipica e' fatta nella seguente maniera:
local database user auth-method [auth-option]
Per creare delle foreign keys dentro la dichiarazione di tabella inserire una riga simile alla seguente:
nomecampo tipo references nometabella(nomeCampoForeign)
Si usa GRANT, come nell'esempio:
GRANT ALL ON nomeschema.nometabella TO utente
In questo caso do accesso completo all'utente utente, nella tabella nometabella dello schema nomeschema
Per vedere gli schema presenti in un database dopo essersi connessi a tale DB, dare il comando:
\dn
Per vedere le tabbelle di uno schema invece basta dare:
\dt nomeschema.
Si puo' usare psql per vedere i database presenti:
psql -l -U nomeutente
dove -l indica appunto di mostrare la lista dei databases presenti sul server.
Per vedere quali sono i campi di cui e' composta una tabella basta dare:
\d quote_man.us_domain
Per dumpare il database per prima cosa fare:
su - postgres
(o l'equvialente dell'user postgresql sul vostro sistema). Dopo di che scegliete il db da dumpare con:
psql -l
e date:
pg_dump nomedb > output.sql
Per importare invece farete:
psql -d nomedb -f output.sql
Attenzione che il database nomedb deve esistere per poter esser eseguito l'import.
Si usa la UPDATE, con la seguente sintassi:
UPDATE nomeschema.nometabella SET campo = valore WHERE condizione;
dove valore puo' anche essere una espressione.
Per creare un database:
CREATE DATABASE nomedatabase
Per creare un database e dare l'owner ad un utente:
CREATE DATABASE nomedatabase WITH OWNER nomeutente
Per vedere gli utenti si puo' usare o \du per informazioni veloci, altrimenti si puo' usare:
SELECT * FROM pg_user;
Per vedere i gruppi invece si usa:
SELECT * FROM pg_group;