Solution communautaire

Installer MySQL sur CasaOS avec un stockage Docker persistant

A 2023 CasaOS tutorial introduced MySQL installation; current Docker Official Image guidance now defines versions, persistence, and initialization variables.

Installez MySQL sur CasaOS avec l’image Docker officielle, un volume persistant /var/lib/mysql et une balise de version explicite. Ne vous fiez pas à une ancienne capture d’écran de 2023 ni à une balise flottante latest pour une base de données importante.

En septembre 2026, l’image Docker officielle publie MySQL 8.4 LTS ainsi que des versions 9.x plus récentes et des branches d’innovation. Pour les services auto-hébergés à long terme, la version 8.4 constitue une base de compatibilité raisonnable, sauf si votre application prend explicitement en charge une version majeure plus récente.

Utiliser l’image officielle de MySQL

L’image Docker officielle de MySQL actuelle est maintenue par la communauté Docker et l’équipe MySQL.

Choisir délibérément une balise de version

Utilisez une balise majeure/LTS épinglée telle que :

mysql:8.4

plutôt que de suivre aveuglément latest, qui peut passer à une version majeure plus récente avec des changements de compatibilité.

Paramètres CasaOS persistants

  • Image : mysql:8.4
  • Port du conteneur : 3306
  • Volume persistant : chemin AppData de l’hôte → /var/lib/mysql
  • MYSQL_ROOT_PASSWORD : mot de passe root d’amorçage robuste
  • Facultatif : MYSQL_DATABASE, MYSQL_USER, MYSQL_PASSWORD

Ne pas exposer le port 3306 à Internet

Si une autre application Docker sur le même hôte a besoin de MySQL, placez les deux services sur un réseau Docker partagé et utilisez le nom du service. Vous n’avez souvent pas besoin de publier le port 3306 du tout.

Créer un utilisateur d’application plutôt que d’utiliser root

Utilisez MYSQL_DATABASE, MYSQL_USER, et MYSQL_PASSWORD lors de la première initialisation afin de créer une base de données et un compte spécifiques à l’application.

Conservez root pour l’administration et la récupération.

Comprendre les variables d’environnement de la première exécution

L’image officielle initialise la base de données uniquement lorsque le répertoire de données est vide. La modification ultérieure des variables d’environnement d’amorçage ne réécrit pas automatiquement les comptes ou les bases de données existants.

Sauvegarder avec des vidages logiques

Pour des sauvegardes portables, utilisez mysqldump ou du modèle documenté de vidage/restauration de l’image officielle, plutôt que de copier les fichiers actifs de la base de données pendant que MySQL y écrit.

Connecter phpMyAdmin ou une autre application par nom de service

Sur un réseau Docker partagé, une application web peut se connecter à MySQL à l’aide d’un nom d’hôte de service ou de conteneur tel que mysql. Dans un autre conteneur, localhost fait référence à ce conteneur lui-même.

Le guide de mise en réseau Docker explique ce modèle de réseau de conteneurs.

Vérifiez l’état de santé de MySQL avant de connecter d’autres applications

Après le premier démarrage, ne connectez pas immédiatement les applications de production à la base de données. Consultez les journaux du conteneur et vérifiez que MySQL a terminé son initialisation au lieu de rester dans une boucle de redémarrage.

docker logs mysql
docker exec -it mysql mysqladmin -uroot -p ping

Un serveur opérationnel doit répondre une fois la configuration initiale de la base de données terminée. Le premier démarrage peut prendre plus de temps, car l’image crée les tables système, les utilisateurs et la base de données demandée.

Planifiez le jeu de caractères et le fuseau horaire avant d’importer les données

Les applications peuvent avoir des attentes spécifiques concernant la collation, le jeu de caractères ou le fuseau horaire. Si vous migrez une base de données existante, comparez la version majeure de MySQL et la configuration de l’ancien serveur avant l’importation.

Ne supposez pas qu’une application testée avec MySQL 8.0 prendra automatiquement en charge MySQL 9.x simplement parce que le conteneur démarre. Épinglez la version majeure requise par l’éditeur de l’application.

Séparez le stockage de la base de données des dossiers partagés généraux

Les fichiers de données MySQL doivent être stockés sur un support local fiable, avec des permissions cohérentes et une faible latence. Ne les placez pas /var/lib/mysql sur un montage SMB peu fiable ou un lecteur amovible simplement parce qu’il offre davantage d’espace.

Si l’hôte CasaOS possède un SSD et un pool de disques durs plus volumineux, le SSD est souvent le meilleur emplacement pour la base de données, tandis que des sauvegardes planifiées peuvent être copiées sur le stockage de sauvegarde plus vaste.

FAQ

Dois-je utiliser mysql:latest ?

Pour un auto-hébergement de type production, privilégiez une balise majeure/LTS choisie délibérément afin qu’une extraction courante ne bascule pas inopinément vers une autre version majeure.

Où les données MySQL doivent-elles être conservées ?

Mappez un dossier AppData de l’hôte vers /var/lib/mysql.

Dois-je publier le port 3306 ?

Non, lorsque seuls d’autres conteneurs du même réseau Docker ont besoin de la base de données.

Puis-je modifier MYSQL_ROOT_PASSWORD ultérieurement en éditant la variable du conteneur ?

Pas de manière fiable après l’initialisation. Gérez les comptes de base de données existants directement depuis MySQL.