3. Database, siti e terminali
3.2 Il database di un progetto
Un database e un utente solo per il progetto, la connessione scritta nel file .env, le copie di sicurezza e il ripristino.
Nell'app: «Progetti»
In breve
- Ogni progetto ha un database e un utente tutti suoi, con una password generata dal kit.
- «Scrivi in .env» mette la connessione nel file .env del progetto, dopo averti mostrato che cosa cambia.
- «Copia blocco .env» copia le stesse righe, da incollare dove vuoi tu.
- «Esporta» salva una copia del database; «Ripristina…» la rimette.
- Tutto si fa da Progetti › il progetto › sezione «Database».

Database, utente, password e indirizzo del progetto, «Scrivi in .env» e le copie, con «Esporta» e «Ripristina…».
Creare database e utente
La sezione ha una parte per MySQL e una per MongoDB (con «usato dal progetto» se il kit vede che il progetto lo usa). Se il progetto usa SQLite, una nota spiega che il database è un file del progetto e non serve nessun server.
- Premi «Crea database e utente» nella parte del server che ti serve.
- Il kit installa e avvia il server se serve, poi crea un database e un utente con il nome del progetto (minuscole, cifre e trattino basso: gestionale-fatture diventa gestionale_fatture) e una password di 32 caratteri.
- La parte mostra «Database», «Utente», «Password» e «Stringa» (nascoste, con «Mostra» e «Copia») e «Indirizzo».
Scrivere la connessione nel file .env
- Premi «Scrivi in .env».
- Compare «Righe di .env che cambiano»: per ogni chiave il valore vecchio barrato e quello nuovo (password nascoste).
- Premi «Scrivi» per confermare o «Annulla».
Il kit sceglie le chiavi in base al tuo file .env:
| Se il .env… | MySQL scrive | MongoDB scrive |
|---|---|---|
| contiene già DB_CONNECTION= (stile Laravel) | DB_CONNECTION, DB_HOST, DB_PORT, DB_DATABASE, DB_USERNAME, DB_PASSWORD | DB_CONNECTION=mongodb, DB_DATABASE, MONGODB_URI |
| non lo contiene | DATABASE_URL | MONGODB_URI |
.envDB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=gestionale
DB_USERNAME=gestionale
DB_PASSWORD=3f9c…(32 caratteri generati dal kit).envDATABASE_URL=mysql://portale:3f9c…@127.0.0.1:3306/portale
MONGODB_URI=mongodb://portale:a71e…@127.0.0.1:27017/portale?authSource=portale- Se il file .env non esiste viene creato copiando .env.example. Le altre righe e i commenti restano.
- Se la connessione è già quella giusta: «Il file .env ha già questa connessione.»
- «Copia blocco .env», accanto, non tocca il file: copia le righe della tabella (DB_* per Laravel, altrimenti DATABASE_URL o MONGODB_URI) da incollare in un altro .env, in un file di configurazione o in un terminale; compare «Copiato». Le righe contengono la password: il kit le legge solo quando premi il pulsante.
Copie e ripristino
- Nella parte «Copie» premi «Esporta»: compare «Copia salvata: …» e la copia si aggiunge all'elenco.
- Per tornare a una copia premi «Ripristina…» accanto al file e conferma: «I dati attuali vengono sostituiti.»
- Prima di ripristinare, il kit copia ciò che il database contiene ora, in <database>-prima-del-ripristino-<data e ora>: se la copia non riesce, il ripristino non si fa. Così un ripristino del file sbagliato si annulla ripristinando quella copia.
- «Apri la cartella delle copie» apre la cartella: per ripristinare una copia arrivata da fuori (da un collega, da un altro kit) mettila lì e comparirà nell'elenco.
Delle copie di sicurezza («prima-del-ripristino» e «prima-del-cambio-di-versione») il kit tiene le ultime 3 di ogni tipo ed elimina le più vecchie. Le copie fatte con «Esporta» non vengono mai eliminate.
Cambiare la versione del server
Se hai più versioni di MySQL o MongoDB, il menu «Versione del server» sceglie su quale gira il database del progetto. Cambiandola, database e utente si creano anche sulla nuova versione, vuoti: i dati si portano con una copia (Esporta sulla vecchia, Ripristina sulla nuova). Se la versione scelta non è installata, compare «Installa …». Prima del cambio il kit copia il database sulla versione che lascia, in <database>-prima-del-cambio-di-versione-<data e ora>: se la copia non riesce, la versione non cambia (se quella versione non è più installata, non c'è niente da copiare e il cambio si fa).
Sotto il cofano
- Nomi, password e versioni del database del progetto: data\projects\<progetto>\private\db.json, leggibile solo dal tuo utente su NTFS.
- MySQL: utente con caching_sha2_password su localhost e 127.0.0.1, tutti i permessi sul solo database del progetto. MongoDB: ruolo dbOwner sul database, authSource uguale al nome del database.
- Le copie MySQL sono file .sql fatti con mysqldump (--single-transaction, con routine, trigger ed eventi); quelle MongoDB file .archive.gz fatti con mongodump. Il ripristino MySQL gira con l'utente del progetto e senza comandi del client; quello MongoDB tocca solo il database del progetto.
- Le copie di sicurezza MySQL usano mysqldump --force: un oggetto rotto (una vista su una tabella eliminata) non ferma la copia del resto. Prima di un ripristino MySQL l'amministratore toglie viste, trigger, routine ed eventi del solo database del progetto (quelli di root l'utente del progetto non potrebbe sostituirli); la copia li ricrea come utente del progetto.
- Eliminando il progetto dall'app, il kit elimina anche database e utente su ogni versione in cui li aveva creati.