[comment]: # ({7af1bbaa-7af1bbaa})
# 1 Creazione del database

[comment]: # ({/7af1bbaa-7af1bbaa})

[comment]: # ({e35a4783-fab90562})
#### Panoramica

Durante l'installazione di Zabbix server o proxy deve essere creato un database Zabbix.

Questa sezione fornisce istruzioni per la creazione di un database Zabbix.
È disponibile un insieme separato di istruzioni per ciascun database supportato.

::: noteclassic
Per migliorare la sicurezza del database creando ruoli/utenti del database con privilegi minimi, vedere le best practice per la creazione del database per ciascun database supportato:
<br><br>

-   [MySQL/MariaDB](/manual/best_practices/security/access_control/mysql)
-   [PostgreSQL/TimescaleDB](/manual/best_practices/security/access_control/postgresql)

Per configurare connessioni TLS sicure, vedere [Connessione sicura al database](/manual/appendix/install/db_encrypt).
:::

UTF-8 è l'unica codifica supportata da Zabbix.
È noto che funziona senza vulnerabilità di sicurezza.
Gli utenti devono essere consapevoli che esistono problemi di sicurezza noti se si utilizzano alcune delle altre codifiche.
Per passare a UTF-8, vedere [Ripristino del set di caratteri e della collation del database Zabbix](/manual/appendix/install/db_charset_coll).
Vedere anche [Limiti del filtraggio con collation utf8mb4](/manual/installation/known_issues#limits-of-filtering-with-utf8mb4-collations).

[comment]: # ({/e35a4783-fab90562})

[comment]: # ({94aa3a83-fad527fc})
::: noteclassic
Se si installa da [Zabbix Git repository](https://git.zabbix.com/projects/ZBX/repos/zabbix/browse?at=refs%2Fheads%2Frelease%2F7.4), è necessario eseguire il seguente comando prima di procedere con i passaggi successivi:
<br><br>
`make dbschema`
:::

[comment]: # ({/94aa3a83-fad527fc})

[comment]: # ({ed6803ae-1e36e539})
#### MySQL/MariaDB

I set di caratteri utf8 (ovvero utf8mb3) e utf8mb4 sono supportati (rispettivamente con le regole di confronto utf8_bin e utf8mb4_bin) affinché Zabbix server/proxy funzioni correttamente con il database MySQL.
Per le nuove installazioni si consiglia di utilizzare utf8mb4.

I trigger deterministici devono essere creati durante l'importazione dello schema.
Su MySQL e MariaDB, ciò richiede che `GLOBAL log_bin_trust_function_creators = 1` sia impostato se il binary logging è abilitato, non sono presenti privilegi di superuser e `log_bin_trust_function_creators = 1` non è impostato nel file di configurazione di MySQL.

Se si sta installando dai **pacchetti** Zabbix, procedere alle [istruzioni](https://www.zabbix.com/download) per la propria piattaforma.

Se si sta installando Zabbix dai sorgenti: 

* Creare e configurare un database e un utente.

```bash
mysql -uroot -p<password>

mysql> create database zabbix character set utf8mb4 collate utf8mb4_bin;
mysql> create user 'zabbix'@'localhost' identified by '<password>';
mysql> grant all privileges on zabbix.* to 'zabbix'@'localhost';
mysql> SET GLOBAL log_bin_trust_function_creators = 1;
mysql> quit;
```

* Importare i dati nel database e impostare utf8mb4 come set di caratteri predefinito (supponendo di trovarsi nella directory root dei sorgenti di Zabbix).
Per un database Zabbix proxy, deve essere importato solo `schema.sql` (non images.sql né data.sql).

```bash
cd database/mysql
mysql -uzabbix -p<password> zabbix < schema.sql
# fermarsi qui se si sta creando il database per Zabbix proxy
mysql -uzabbix -p<password> zabbix < images.sql
mysql -uzabbix -p<password> --default-character-set=utf8mb4 zabbix < data.sql
```

`log_bin_trust_function_creators` può essere disabilitato dopo che lo schema è stato importato correttamente:

```bash
mysql -uroot -p<password>

mysql> SET GLOBAL log_bin_trust_function_creators = 0;
mysql> quit;
```

[comment]: # ({/ed6803ae-1e36e539})

[comment]: # ({dbad5843-61d6043c})
#### PostgreSQL

È necessario disporre di un utente del database con i permessi per creare oggetti del database.

Se si esegue l'installazione dai **packages** di Zabbix, procedere con le [istruzioni](https://www.zabbix.com/download) per la propria piattaforma.

Se si installa Zabbix dai sorgenti:

* Creare un utente del database.

Il seguente comando shell creerà l'utente `zabbix`.
Specificare una password quando richiesto e ripetere la password (nota: potrebbe essere prima richiesta la password di `sudo`):

```bash
sudo -u postgres createuser --pwprompt zabbix
```

* Creare un database.

Il seguente comando shell creerà il database `zabbix` (ultimo parametro) con l'utente creato in precedenza come proprietario (`-O zabbix`).

```bash
sudo -u postgres createdb -O zabbix -E Unicode -T template0 zabbix
```

* Importare lo schema iniziale e i dati (supponendo di trovarsi nella directory root dei sorgenti di Zabbix).
Per un database Zabbix proxy, deve essere importato solo `schema.sql` (non images.sql né data.sql).

```bash
cd database/postgresql
cat schema.sql | sudo -u zabbix psql zabbix
# fermarsi qui se si sta creando il database per Zabbix proxy
cat images.sql | sudo -u zabbix psql zabbix
cat data.sql | sudo -u zabbix psql zabbix
```

::: noteimportant
I comandi sopra riportati sono forniti come esempio e funzioneranno nella maggior parte delle installazioni GNU/Linux.
È possibile utilizzare comandi diversi a seconda di come è configurato il sistema/database, ad esempio:
<br><br>
`psql -U <username>`
<br><br>
In caso di problemi durante la configurazione del database, consultare l'amministratore del database.
:::

[comment]: # ({/dbad5843-61d6043c})

[comment]: # ({2e49279b-cc68ca58})
#### TimescaleDB

Le istruzioni per creare e configurare TimescaleDB sono fornite in una [sezione](/manual/appendix/install/timescaledb) separata.

[comment]: # ({/2e49279b-cc68ca58})

[comment]: # ({e8161295-02d49e4f})
#### SQLite

L'uso di SQLite è supportato solo per **Zabbix proxy**!

Il database verrà creato automaticamente se non esiste.

Torna alla [sezione di installazione](/manual/installation/install).

[comment]: # ({/e8161295-02d49e4f})
