PostgreSQL è un database open source supportato in tutto il mondo. Con oltre 30 anni di servizio, PostgreSQL, grazie ai vari add-on disponibili, è famoso per la sua robustezza, scalabilità e prestazioni.
Per prima cosa, connettiti al tuo server tramite una connessione SSH. Se non l'hai ancora fatto, ti consigliamo di seguire la nostra guida per connetterti in modo sicuro con SSH. Nel caso di un server locale, vai al passaggio successivo e apri il terminale del tuo server.
Installazione di PostgreSQL
Per procedere con l'installazione di PostgreSQL, utilizzare il gestore di pacchetti apt. Assicurati di aggiornare la cache:
$ sudo apt update && sudo apt install postgresql postgresql-contrib
Una volta completata l'installazione, il servizio sarà immediatamente disponibile. Controlla il file di registro in /var/log/postgresql/postgresql-10-main.log solo per essere sicuro
# tail /var/log/postgresql/postgresql-10-main.log
...LOG: database system is ready to accept connections
...
Se tutto funziona correttamente, il testo sopra sarà nelle ultime righe del file di registro.
Verifica dell'installazione
Per verificare la corretta installazione di PostgreSQL, utilizzare il client della riga di comando chiamato psql. Innanzitutto, utilizza l'utente predefinito installato dal servizio. Per accedere al database, il processo di autenticazione della configurazione di default di PostgreSQL utilizza gli stessi utenti del sistema..
Per accedere con l'utente predefinito, dalla riga di comando, esegui
$ sudo -i -u postgres
Adesso avvia il client e usa il comando \l per visualizzare l'elenco dei database disponibili :
$ sudo -i -u postgres
$ psql
postgres=# \l
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-----------+----------+----------+-------------+-------------+-----------------------
postgres | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
template0 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
(3 rows)
postgres=# \q
[email protected]:~$ exit
Una volta completato, esci dal client con il comando \q e torna all'utente originale digitando 'exit'.
Gestione utenti e autorizzazioni
Come accennato in precedenza, PostgreSQL presuppone che ogni utente presente nel suo servizio sia presente anche nel sistema. Per creare un nuovo utente, prima aggiungilo al sistema tramite adduser:
$ sudo adduser tutorial
Adding user `tutorial' ...
Adding new group `tutorial' (1000) ...
Adding new user `tutorial' (1000) with group `tutorial' ...
Creating home directory `/home/tutorial' ...
Copying files from `/etc/skel' ...
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
Changing the user information for tutorial
Enter the new value, or press ENTER for the default
Full Name []:
Room Number []:
Work Phone []:
Home Phone []:
Other []:
Is the information correct? [Y/n] y
Nell'esempio seguente viene creato un utente chiamato "tutorial", senza specificare altre informazioni, come il nome o il numero di telefono. Una volta completato, è possibile creare l'utente PostgreSQL. accedendo prima con l'utente postgres:
$ sudo -i -u postgres
$ createuser --interactive
Enter name of role to add: tutorial
Shall the new role be a superuser? (y/n) n
Shall the new role be allowed to create databases? (y/n) n
Shall the new role be allowed to create more new roles? (y/n) n
Dopo aver creato l'utente, imposta una password, effettua l'accesso tramite il superutente postgres e modifica l'utente appena creato:
$ psql
postgres=# ALTER USER tutorial PASSWORD 'password'; ALTER ROLE;
Può anche essere creato un database per l'utente appena creato eseguendo il comando:
$ createdb tutorial
Una volta completato, esci e prova ad accedere con l'utente appena creato:
$ sudo -i -u tutorial
[email protected]:~$ psql
psql (10.9 (Ubuntu 10.9-0ubuntu0.18.04.1))
Type "help" for help.
tutorial=> \l
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-----------+----------+----------+-------------+-------------+-----------------------
postgres | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
template0 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
tutorial | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
(4 rows)
Abilitazione dell'accesso a client esterni
In alcuni casi, potrebbe essere necessario consentire l'accesso da parte di client esterni (ad esempio la tua macchina) a uno o più database sul server. Normalmente PostgreSQL non è configurato per accettare connessioni che non sono locali, quindi modifica alcuni file di configurazione.
Il primo file da modificare è il file di configurazione principale, in /etc/postgresql/10/main/postgresql.conf.
Assicurati di modificare la seguente riga da:
listen_addresses = 'localhost'
Con:
listen_addresses = '*'
In questo modo informi PostgreSQL di aspettarsi connessioni in entrata da qualsiasi interfaccia di rete.
Assicurati di salvare la modifica. Passa ora alla modifica del file che gestisce le regole di accesso al server in /etc/postgresql/10/main/pg_hba.conf, aggiungendo la seguente riga:
host tutorial tutorial 0.0.0.0/0 md5
Questa modifica consente all'utente "tutorial" di accedere al suo database da qualsiasi host. In particolare i campi indicati sono:
host:il tipo di connessione che stai accettando. I valori possibili sono:
- locale:connessioni non di rete dal sistema
- host:qualsiasi tipo di connessione TCP/IP
- hostssl:connessioni TCP / IP solo con protocollo SSL
- hostnossl:connessioni TCP / IP NON sotto protocollo SSL
tutorial:nome del database per consentire l'accesso, utilizzare "all" per fare riferimento a tutti i database
tutorial:nome utente per concedere l'accesso
0.0.0.0/0:indirizzo IP, nel tuo caso stai autorizzando l'accesso a qualsiasi indirizzo IPv4
md5:metodologia di autenticazione accettata, alcune delle più importanti sono:
- md5:autenticazione password
- fiducia:accetta incondizionatamente la connessione incondizionatamente
- peer:utilizza il nome utente di sistema per connettersi solo al database con lo stesso nome.
Per ulteriori informazioni accedi all'indirizzo https://www.postgresql.org/docs/9.1/auth-pg-hba-conf.html o al documento ufficiale di PostgreSQL.
Una volta terminato, riavvia il servizio per applicare tutte le modifiche:
$ sudo systemctl restart postgresql