Il server PostgreSQL è configurabile mediante tre file:
- postgresql.conf
- pg_hba.conf
- pg_ident.conf
che si trovano in `/etc/postgresql/x.y/main/`
Per applicare le modifiche va fatto il *restart* del server.
Per consentire a tutti gli indirizzi IP di connettersi al server PostgreSQL, si devono modificare i file di configurazione precedenti.
#### Configurare postgresql.conf
Aprire il file e apportare alcune modifiche per consentire la connessione remota.
```bash
sudo nano /etc/postgresql/xx/main/postgresql.conf
```
Nel file cercare "listen_addresses" e aggiungere la seguente riga:
```bash
#listen_addresses = 'localhost'
listen_address = '*'
```
Ciò cambia l'indirizzo di ascolto da localhost a "*", che consentirà a qualsiasi indirizzo IP di connettersi al server del database. Oppure se si desidera specificare alcuni IP particolari, è possibile digitarli con spazi tra ciascun indirizzo IP.
#### Configurare pg_hba.conf
Per consentire ad utenti particolari di essere collegati al database, bisogna apportare modifiche al file *pg_hba.conf* . Questo file sarà disponibile nella stessa directory di cui sopra.
```bash
sudo nano /etc/postgresql/xx/main/pg_hba.conf
```
Nel file aggiungere le seguenti righe:
```bash
# TYPE DATABASE USER ADDRESS METHOD
host all all 0.0.0.0/0 md5
host all all :/0 md5
```
Salvare il file di configurazione. Ora, riavviare il database eseguendo il comando indicato di seguito:
```bash
service postgresql restart
```
Infine, aprire la porta **5432** nel firewall col comando:
```bash
sudo ufw allow 5432
```
Altre info: [https://noviello.it/come-configurare-postgresql-per-consentire-le-connessioni-remote/](https://noviello.it/come-configurare-postgresql-per-consentire-le-connessioni-remote/)
## User
### Create user
```bash
sudo su postgres
psql
CREATE USER <name> SUPERUSER CREATEDB;
```
Se l'utente esistesse già:
```bash
ALTER USER <name> WITH PASSWORD <password>;
```
Altre info: [https://phoenixnap.com/kb/postgres-create-user](https://phoenixnap.com/kb/postgres-create-user)
### Drop user
```bash
DROP USER <name>;
```
## Database
### Create Database
```bash
CREATE DATABASE <database_name>
WITH
[OWNER = role_name]
[ALLOW_CONNECTIONS = true | false]
```
Altre info: [https://www.postgresql.org/docs/12/sql-createdatabase.html](https://www.postgresql.org/docs/12/sql-createdatabase.html)