Installeer MySQL op CasaOS met de officiële Docker-image, een permanent volume voor /var/lib/mysql en een expliciete versietag. Vertrouw niet op een oude schermafbeelding uit 2023 of een zwevende latest-tag voor een database die belangrijk voor je is.
In september 2026 publiceert de officiële Docker-image MySQL 8.4 LTS en nieuwere 9.x-/Innovation-lijnen. Voor langdurige selfhostingdiensten is 8.4 een verstandige compatibiliteitsbasis, tenzij je applicatie expliciet een nieuwere hoofdversie ondersteunt.
Gebruik de officiële MySQL-image
De huidige officiële MySQL Docker-image wordt onderhouden door de Docker Community en het MySQL-team.
Kies bewust een versietag
Gebruik een vastgezette major-/LTS-tag, zoals:
mysql:8.4
in plaats van blindweg latest, die naar een nieuwere hoofdversie kunnen worden gemigreerd met compatibiliteitswijzigingen.
Permanente CasaOS-instellingen
-
Image:
mysql:8.4 -
Containerpoort:
3306 -
Permanente volume: AppData-pad op de host →
/var/lib/mysql - MYSQL_ROOT_PASSWORD: sterk rootwachtwoord voor de bootstrap
-
Optioneel:
MYSQL_DATABASE,MYSQL_USER,MYSQL_PASSWORD
Stel poort 3306 niet bloot aan het internet
Als een andere Docker-app op dezelfde host MySQL nodig heeft, plaats je beide services op een gedeeld Docker-netwerk en gebruik je de servicenaam. Je hoeft poort 3306 vaak helemaal niet te publiceren.
Maak een applicatiegebruiker aan in plaats van root te gebruiken
Gebruik MYSQL_DATABASE, MYSQL_USER, en MYSQL_PASSWORD tijdens de eerste initialisatie om een databasespecifieke gebruiker en database voor de applicatie aan te maken.
Houd root voor beheer en herstel.
Begrijp omgevingsvariabelen voor de eerste keer starten
De officiële image initialiseert de database alleen wanneer de datamap leeg is. Als je bootstrap-omgevingsvariabelen later wijzigt, worden bestaande accounts of databases niet automatisch herschreven.
Maak back-ups met logische dumps
Gebruik voor draagbare back-ups mysqldump of het gedocumenteerde dump-/herstelpatroon van de officiële image, in plaats van actieve databasebestanden te kopiëren terwijl MySQL schrijft.
Verbind phpMyAdmin of een andere app via de servicenaam
Op een gedeeld Docker-netwerk kan een webapp met MySQL verbinden via een servicenaam of containerhostnaam, zoals mysql. In een andere container, localhost verwijst naar die container zelf.
De Docker-netwerkgids legt dat containernetwerkmodel uit.
Controleer de status van MySQL voordat je andere apps verbindt
Wijs productieapplicaties na de eerste start niet meteen naar de database. Controleer de containerlogs en verifieer dat MySQL de initialisatie heeft voltooid en niet in een herstartlus blijft hangen.
docker logs mysql
docker exec -it mysql mysqladmin -uroot -p ping
Een gezonde server moet reageren nadat de eerste database-instelling is voltooid. De eerste start kan langer duren, omdat de image systeemtabellen, gebruikers en de aangevraagde database aanmaakt.
Plan tekenset en tijdzone vóór het importeren van gegevens
Applicaties kunnen specifieke verwachtingen hebben voor sortering, tekenset of tijdzone. Vergelijk bij het migreren van een bestaande database de major versie en configuratie van de oude MySQL-server voordat je importeert.
Ga er niet van uit dat een applicatie die op MySQL 8.0 is getest automatisch MySQL 9.x ondersteunt, alleen omdat de container start. Pin de major versie die de leverancier van de applicatie vereist.
Scheid databaseopslag van algemene gedeelde mappen
MySQL-gegevensbestanden moeten op betrouwbare lokale opslag staan, met consistente rechten en lage latentie. Plaats ze niet /var/lib/mysql op een onbetrouwbare SMB-koppeling of verwisselbare schijf alleen omdat die meer capaciteit heeft.
Als de CasaOS-host een SSD en een grotere HDD-pool heeft, is de SSD vaak de betere locatie voor de database, terwijl geplande dumps naar de grotere back-upopslag kunnen worden gekopieerd.
Veelgestelde vragen
Moet ik mysql:latest gebruiken?
Gebruik voor productieachtige self-hosting bij voorkeur een bewust gekozen major-/LTS-tag, zodat een routinematige pull niet onverwacht naar een andere major versie springt.
Waar moeten de MySQL-gegevens persistent worden opgeslagen?
Koppel een AppData-map op de host aan /var/lib/mysql.
Moet ik poort 3306 publiceren?
Niet wanneer alleen andere containers op hetzelfde Docker-netwerk de database nodig hebben.
Kan ik MYSQL_ROOT_PASSWORD later wijzigen door de containervariabele aan te passen?
Niet betrouwbaar na initialisatie. Beheer bestaande databaseaccounts vanuit MySQL zelf.
