Installa MySQL su CasaOS con l'immagine Docker ufficiale, un volume persistente /var/lib/mysql e un tag di versione esplicito. Non affidarti a uno screenshot obsoleto del 2023 o a un tag mobile latest per un database importante.
A settembre 2026, l'immagine Docker ufficiale pubblica MySQL 8.4 LTS, oltre alle linee più recenti 9.x/Innovation. Per i servizi self-hosted a lungo termine, la versione 8.4 è una base ragionevole per la compatibilità, a meno che l'applicazione non supporti esplicitamente una versione principale più recente.
Usa l'immagine ufficiale di MySQL
L'attuale immagine Docker ufficiale di MySQL è gestita dalla Docker Community e dal MySQL Team.
Scegli deliberatamente un tag di versione
Usa un tag di versione principale/LTS fissato, ad esempio:
mysql:8.4
invece di seguire ciecamente latest, che può passare a una versione principale più recente con modifiche di compatibilità.
Impostazioni persistenti di CasaOS
-
Immagine:
mysql:8.4 -
Porta del container:
3306 -
Volume persistente: percorso AppData dell'host →
/var/lib/mysql - MYSQL_ROOT_PASSWORD: password root di bootstrap robusta
-
Facoltativo:
MYSQL_DATABASE,MYSQL_USER,MYSQL_PASSWORD
Non esporre la porta 3306 a Internet
Se un'altra app Docker sullo stesso host ha bisogno di MySQL, inserisci entrambi i servizi in una rete Docker condivisa e usa il nome del servizio. Spesso non è necessario pubblicare affatto la porta 3306.
Crea un utente dell'applicazione invece di usare root
Usa MYSQL_DATABASE, MYSQL_USER, e MYSQL_PASSWORD durante la prima inizializzazione per creare un database e un account specifici per l'applicazione.
Conserva root per l'amministrazione e il ripristino.
Comprendi le variabili d'ambiente della prima esecuzione
L'immagine ufficiale inizializza il database solo quando la directory dei dati è vuota. La modifica successiva delle variabili d'ambiente di bootstrap non riscrive automaticamente gli account o i database esistenti.
Esegui il backup con dump logici
Per backup portabili, usa mysqldump oppure il modello documentato dell'immagine ufficiale per il dump e il ripristino, invece di copiare i file attivi del database mentre MySQL sta scrivendo.
Collega phpMyAdmin o un'altra app tramite il nome del servizio
Su una rete Docker condivisa, un'app web può connettersi a MySQL utilizzando un hostname del servizio o del container, ad esempio mysql. All'interno di un altro container, localhost si riferisce al container stesso.
La guida al networking Docker spiega questo modello di rete tra container.
Verifica lo stato di MySQL prima di connettere altre applicazioni
Dopo il primo avvio, non indirizzare immediatamente le applicazioni di produzione al database. Controlla i log del container e verifica che MySQL abbia completato l'inizializzazione invece di rimanere in un ciclo di riavvio.
docker logs mysql
docker exec -it mysql mysqladmin -uroot -p ping
Un server in buone condizioni dovrebbe rispondere al termine della configurazione iniziale del database. Il primo avvio può richiedere più tempo perché l'immagine crea le tabelle di sistema, gli utenti e il database richiesto.
Pianifica il set di caratteri e il fuso orario prima di importare i dati
Le applicazioni possono avere requisiti specifici relativi a confronto, set di caratteri o fuso orario. Se stai migrando un database esistente, confronta la versione major e la configurazione di MySQL del vecchio server prima dell'importazione.
Non dare per scontato che un'applicazione testata con MySQL 8.0 supporti automaticamente MySQL 9.x solo perché il container si avvia. Fissa la versione major richiesta dal fornitore dell'applicazione.
Separa lo storage del database dalle cartelle condivise generiche
I file dei dati di MySQL devono risiedere su uno storage locale affidabile, con autorizzazioni coerenti e bassa latenza. Non collocarli /var/lib/mysql su un mount SMB inaffidabile o su un'unità rimovibile solo perché dispone di maggiore capacità.
Se l'host CasaOS dispone di un SSD e di un pool di HDD più capiente, l'SSD è spesso la posizione migliore per il database, mentre i dump pianificati possono essere copiati nello spazio di archiviazione più grande dedicato ai backup.
FAQ
Devo usare mysql:latest?
Per un ambiente di self-hosting simile alla produzione, preferisci un tag major/LTS scelto intenzionalmente, in modo che un normale pull non passi inaspettatamente a versioni major successive.
Dove devono essere salvati in modo persistente i dati di MySQL?
Mappa una cartella AppData dell'host su /var/lib/mysql.
Devo pubblicare la porta 3306?
Non quando solo altri container sulla stessa rete Docker devono accedere al database.
Posso modificare in seguito MYSQL_ROOT_PASSWORD modificando la variabile del container?
Non in modo affidabile dopo l'inizializzazione. Gestisci gli account di database esistenti direttamente da MySQL.
