# Crea database e utenti MySQL, MariaDB e PostgreSQL

> Crea database e utenti sul tuo server, scegli a quali database accede ogni utente, importa i database esistenti e collegati in sicurezza con un tunnel SSH.

La pagina **Database** di un server gestisce i database e gli utenti del database presenti su di esso. Crei un database, crei un utente con una password e scegli esattamente a quali database può accedere quell'utente. Vimonto Deploy esegue l'SQL sul server per te, così per il lavoro di tutti i giorni non devi mai accedere a mano a MySQL, MariaDB o PostgreSQL.

La pagina è disponibile sui server con un motore di database: app server e server database (vedi [tipi di server](https://ops.vimonto.com/docs/it/servers/server-types)).

![La pagina Database con un elenco di database, i loro utenti e i dati di connessione](https://ops.vimonto.com/docs-media/it/server-databases.webp?v=161e760d "Database e utenti su un server")

## Quali motori di database sono supportati?

Scegli il motore quando [crei il server](https://ops.vimonto.com/docs/it/servers/create-a-server). Un server esegue un solo motore.

| Motore | Versioni | Porta |
| --- | --- | --- |
| MySQL | 8.4 LTS, 8.0 | 3306 |
| MariaDB | 11.4 LTS, 10.11 LTS | 3306 |
| PostgreSQL | 18, 17, 16 | 5432 |

I database MySQL e MariaDB vengono creati con il set di caratteri `utf8mb4` e la collation `utf8mb4_unicode_ci`. Tutti i motori lavorano in UTC.

## Con cosa parte un nuovo server?

Il provisioning crea un database e un utente del database, entrambi con il nome dell'utente di sistema del server (`vimonto` per impostazione predefinita). Quell'utente ha accesso a tutti i database del server. La sua password è la **Password del database** mostrata una sola volta tra le password del server dopo il provisioning; salvala nel tuo password manager, perché Vimonto Deploy la elimina non appena confermi.

Nell'elenco **Utenti** questo utente è contrassegnato come **Utente di sistema** e mostra **Tutti i database**. Mantiene questo accesso: non puoi limitarlo ad alcuni database né rimuoverlo, perché i siti senza un utente del database proprio si connettono con lui. Clicca su **Cambia password** accanto a lui per dargli una nuova password; Vimonto Deploy cambia allora solo la password e lascia i suoi diritti come sono. Aggiorna `DB_PASSWORD` nell'[ambiente](https://ops.vimonto.com/docs/it/sites/environment) di ogni sito che si connette con questo utente. Finché le password del server attendono ancora la tua conferma, la nuova password sostituisce anche la **Password del database** mostrata lì.

## Crea un database

1. Apri il server e scegli **Database** nella barra laterale.
2. Clicca su **Nuovo database**.
3. Inserisci un **Nome**, ad esempio `shop_production`. Usa lettere, numeri e underscore, al massimo 63 caratteri.
4. Clicca su **Crea**.

Il database viene mostrato come **Aggiunta in corso** finché non esiste sul server. Se la creazione non riesce, clicca su **Riprova**.

> [!TIP]
> Quando [crei un sito](https://ops.vimonto.com/docs/it/sites/create-a-site), puoi creare nello stesso passaggio il suo database e un utente dedicato. Il nuovo database e il nuovo utente compaiono poi anche qui.

## Aggiungi un utente del database

1. Nella sezione **Utenti**, clicca su **Nuovo utente**.
2. Inserisci un **Nome** (lettere, numeri e underscore, al massimo 32 caratteri).
3. Inserisci una **Password** di almeno 12 caratteri, oppure clicca su **Genera** per una password casuale di 24 caratteri.
4. In **Accesso a**, spunta i database che l'utente può usare.
5. Clicca su **Crea**.

Vimonto Deploy non memorizza le password dei database. La password arriva al server una sola volta, in un job cifrato, e poi viene dimenticata. Annotala tu stesso, ad esempio nell'[ambiente](https://ops.vimonto.com/docs/it/sites/environment) del tuo sito.

### Cosa può fare un utente del database?

Un utente riceve tutti i privilegi sui database che spunti e nessuno sugli altri database. L'elenco sotto ogni utente mostra i suoi database, oppure **Nessun accesso** se non ne è spuntato nessuno.

- Su MySQL e MariaDB l'utente viene creato sia per le connessioni locali sia per quelle da altri host, con gli stessi diritti.
- Su PostgreSQL l'utente riceve tutti i privilegi su ogni database e sul relativo schema `public`.

### Cambia l'accesso o la password di un utente

Clicca su **Modifica** accanto a un utente. Cambia i database spuntati in **Accesso a**, oppure inserisci una nuova **Password**. Lascia vuota la password per mantenere quella attuale. Clicca su **Salva**: Vimonto Deploy rimuove i vecchi privilegi dell'utente e concede esattamente i database ora spuntati. L'utente di sistema è l'eccezione: riceve solo una nuova password, come descritto sopra.

## Recupera i database creati sul server

I database creati al di fuori di Vimonto Deploy, ad esempio da una migration, da un ripristino o a mano nel [terminale](https://ops.vimonto.com/docs/it/servers/terminal), non compaiono automaticamente. Clicca su **Recupera dal server** per aggiungerli all'elenco. Vimonto Deploy legge i database sul server, salta i database di sistema del motore e aggiunge ogni nuovo database. Dopodiché puoi dare agli utenti accesso a questi database e includerli nei [backup](https://ops.vimonto.com/docs/it/servers/backups).

Vengono rilevati solo i database con nomi composti da lettere, numeri e underscore. Gli utenti creati al di fuori di Vimonto Deploy non vengono recuperati.

## Collegati a un database

La sezione **Connetti** mostra i dati per i tuoi client di database e le tue applicazioni:

| Campo | Cos'è |
| --- | --- |
| **Host** | L'indirizzo IP privato del server, se ne ha uno, altrimenti il suo indirizzo IP pubblico. |
| **Porta** | 3306 per MySQL e MariaDB, 5432 per PostgreSQL. |
| **Tunnel SSH** | Un comando pronto all'uso per raggiungere il database dal tuo computer. |
| **URL di connessione** | Il formato di URL da usare, con utente, password e database già compilati. |

### Da un sito sullo stesso server

Un sito sullo stesso server si collega a `127.0.0.1` sulla porta del motore con un utente del database e la sua password. Inserisci questi valori nell'[ambiente](https://ops.vimonto.com/docs/it/sites/environment) del sito; per un'applicazione Laravel sono `DB_HOST`, `DB_PORT`, `DB_DATABASE`, `DB_USERNAME` e `DB_PASSWORD`.

### Dal tuo computer tramite un tunnel SSH

La porta del database non è aperta su internet. Per usare un client desktop come TablePlus, DBeaver o MySQL Workbench, apri un tunnel SSH con l'utente di sistema, usando una [chiave SSH](https://ops.vimonto.com/docs/it/connections/ssh-keys) presente sul server:

```bash
ssh -L 3306:127.0.0.1:3306 vimonto@203.0.113.10
```

Mentre il tunnel è aperto, collega il tuo client a `127.0.0.1` sulla porta 3306 (5432 per PostgreSQL) con un utente del database e la sua password. La maggior parte dei client di database può anche aprire da sola il tunnel SSH: inserisci l'indirizzo IP del server, l'utente `vimonto` e la tua chiave privata nelle impostazioni SSH del client.

### Da altri server

Su un server database dedicato, il motore ascolta su tutte le interfacce di rete, così i web server e i worker server possono collegarsi. Se il server database è in una [rete privata](https://ops.vimonto.com/docs/it/servers/server-types#server-in-una-rete-privata), il provisioning consente già la porta 3306 (o 5432) dall'intervallo di indirizzi di quella rete: collega gli altri tuoi server della rete all'indirizzo IP privato del server database, senza regole aggiuntive. Per collegarti da altrove, ad esempio da un server fuori dalla rete o da un indirizzo IP pubblico fisso, aggiungi tu una regola per quella porta da quell'indirizzo nella pagina [Rete](https://ops.vimonto.com/docs/it/servers/network). Un server database senza rete privata non accetta connessioni da altri server finché non aggiungi una regola del genere.

Su un app server, MySQL e MariaDB ascoltano solo sul server stesso, e PostgreSQL solo su `localhost`. Usa un tunnel SSH per raggiungerli da altrove.

> [!WARNING]
> Non consentire mai la porta del database a chiunque. Limita le regole del firewall agli indirizzi dei tuoi server.

## Elimina un database o un utente

Clicca su **Rimuovi** accanto a un database, digita il suo nome per confermare e clicca su **Elimina database**. Il database e tutti i suoi dati vengono eliminati definitivamente.

Clicca su **Rimuovi** accanto a un utente e conferma con **Rimuovi utente**. Le applicazioni che si collegano con questo utente non possono più raggiungere il loro database. Su PostgreSQL gli oggetti di proprietà dell'utente vengono eliminati insieme a lui.

> [!WARNING]
> L'eliminazione di un database non può essere annullata. Fai prima un [backup](https://ops.vimonto.com/docs/it/servers/backups) se potresti aver bisogno dei dati.

## Domande frequenti

### Dove trovo la password del database?

Vimonto Deploy non memorizza le password degli utenti del database che crei; le scegli o le generi tu. Se ne hai persa una, clicca su **Modifica** accanto all'utente e imposta una nuova password, poi aggiorna le applicazioni che la usano. La password dell'utente di sistema viene mostrata una sola volta dopo il provisioning.

### Un utente del database può accedere a più di un database?

Sì. Spunta in **Accesso a** ogni database di cui l'utente ha bisogno. Un utente senza database spuntati può accedere, ma non può usare alcun database.

### Perché il mio altro server non riesce a collegarsi al database?

Controlla tre cose: il database gira su un server database dedicato (un app server accetta solo connessioni locali), il firewall del server database consente la porta dall'altro server (in automatico in una rete privata, con una regola tua per altri indirizzi), e ti colleghi all'indirizzo IP privato quando entrambi i server sono nella stessa rete privata.

### Vimonto Deploy supporta qui Redis o MongoDB?

No. Questa pagina gestisce MySQL, MariaDB e PostgreSQL. Redis viene installato come servizio sugli app server e sui server di cache; vedi [servizi](https://ops.vimonto.com/docs/it/servers/services).
