Journal-indexDockup / praktijknotitie
Note / self-host-phpmyadmin

phpMyAdmin zelf hosten in 2026: MySQL-netwerken, uploads en beveiliging

Een praktische handleiding voor het zelf hosten van phpMyAdmin over Docker, poorten, persistente data, TLS, beveiliging, back-ups en problemen die productiegebruik verhinderen. In 2026.

De meeste installatie-instructies voor phpMyAdmin eindigen zodra de eerste pagina is geladen. Dat is te vroeg: PMA_HOST is binnen de container localhost of uploadlimieten blokkeren imports. Een nuttige productietest stelt hogere eisen: log in op MySQL via de private hostname, voer een query uit, exporteer een tabel en importeer via de proxy een kleine dump.

De rol van phpMyAdmin is eenvoudig: een vertrouwde browserconsole voor MySQL en MariaDB. De operationele grens omvat meer dan alleen het webproces. Daarom moeten de dependency, opgeslagen state en publieke route expliciet worden benoemd voordat er echte data binnenkomt.

Breng phpMyAdmin in kaart voordat je Docker aanraakt

Laat de phpMyAdmin-image niet per ongeluk de productiearchitectuur bepalen. De image levert een proces op poort 80; storage, routing en externe vereisten hebben nog steeds doelbewuste lifecycles nodig. Het netwerkcontract voor phpMyAdmin is private network access tot MySQL of MariaDB. Houd private endpoints op interne DNS, sta alleen noodzakelijke outbound calls toe en geef phpMyAdmin een servicecredential met beperkte scope.

De deployment is klaar voor uitgebreidere tests wanneer deze via de private hostname kan inloggen op MySQL, een query kan uitvoeren, een tabel kan exporteren en via de proxy een kleine dump kan importeren. Volg de transactie in de logs en let op uploadlimieten, PHP-geheugen, de grootte van browserresultaten en netwerklatentie naar MySQL. Deze observaties laten zien of de huidige topology het juiste component isoleert.

Maak de publieke origin ondubbelzinnig

Stel één HTTPS-hostname beschikbaar voor phpMyAdmin en houd raw poort 80 privé. Bied de console aan via HTTPS op een beperkte administratieve hostname. Zo voorkom je dat browsers en API-clients twee concurrerende adressen leren kennen.

Voer vanaf een schone client de bekende, goedgekeurde transactie uit en controleer welk request als eerste faalt. Gebruik de handleiding voor custom domains wanneer DNS of TLS niet goed is ingesteld. Behandel “PMA_HOST is binnen de container localhost of uploadlimieten blokkeren imports” als een afzonderlijke applicatiediagnose zodra de route is gevalideerd.

Containerinstellingen die je moet controleren

Een productiegerichte launch is bewust saai: benoemde state, een expliciete poort en geen secret in de image.

docker run -d \
  --name phpmyadmin \
  --restart unless-stopped \
  -p 127.0.0.1:80:80 \
  -e PMA_HOST=mysql.internal \
  phpmyadmin:latest

Het voorbeeld is een baseline en geen complete supporting stack. Voeg de gecontroleerde verbindingsinstellingen toe voor private network access tot MySQL of MariaDB en gebruik private namen voor private services. Controleer de effectieve mounts en listener en probeer vervolgens in te loggen op MySQL via de private hostname, een query uit te voeren, een tabel te exporteren en via de proxy een kleine dump te importeren. Leg de werkende image vast voordat de volgende restart plaatsvindt.

Houd de workload in de gaten, niet alleen de container

Een idle health check zegt weinig over phpMyAdmin. Houd uploadlimieten, PHP-geheugen, de grootte van browserresultaten en netwerklatentie naar MySQL in de gaten en alerteer op het symptoom dat gebruikers ervaren: het mislukken van de actie “inloggen op MySQL via de private hostname, een query uitvoeren, een tabel exporteren en via de proxy een kleine dump importeren”. Houd liveness lokaal en goedkoop; laat readiness migrations of initialisatie rapporteren zonder een restart storm te veroorzaken.

Het risicovolle upgradegebied is dat phpMyAdmin grotendeels stateless is, maar dat versie wijzigingen kunnen beïnvloeden welke authentication plugins en MySQL-features worden ondersteund. Lees de release notes, maak een snapshot van de state, deploy de doelversie tegen een herstelde kopie en herhaal de acceptatieactie. Als PMA_HOST binnen de container localhost is of uploadlimieten imports blokkeren, koppel dan het clientrequest aan de eerste relevante applicatielog in plaats van blind state te verwijderen of redirects toe te voegen.

De phpMyAdmin-release gate

Maak vóór de komst van echte gebruikers een releaseworksheet voor phpMyAdmin. Deze moet de vastgezette image, poort 80, canonical origin, persistente paden en de eigenaar van private network access tot MySQL of MariaDB benoemen. Voeg het verwachte resultaat van deze transactie toe: inloggen op MySQL via de private hostname, een query uitvoeren, een tabel exporteren en via de proxy een kleine dump importeren.

Gebruik de worksheet na een normale vervanging en na een clean restore. Recovery wordt alleen geaccepteerd als de beoogde MySQL-back-up onafhankelijk wordt hersteld en de opnieuw aangemaakte console verbinding kan maken met het bedoelde account met beperkte rechten. Verzamel ook een korte resource trace met uploadlimieten, PHP-geheugen, de grootte van browserresultaten en netwerklatentie naar MySQL; bewaar die naast de release zodat toekomstige capaciteitswijzigingen met dezelfde workload kunnen worden vergeleken.

Neem één gecontroleerde fout op: weiger de testidentiteit tijdelijk toegang tot private network access tot MySQL of MariaDB. Controleer of phpMyAdmin het probleem op de juiste grens rapporteert, herstel de geldige situatie en voer de transactie opnieuw uit. Hiermee controleer je de zichtbaarheid van fouten, niet alleen succes, en voorkom je dat een gezond ogende interface een defecte worker, callback of databaseverbinding verbergt.

Maak recovery van phpMyAdmin meetbaar

De standaard phpMyAdmin-container heeft geen vereiste mount voor applicatiedata. De recoveryset is nog steeds expliciet: maak back-ups van de MySQL-databases en bewaar alleen doelbewuste phpMyAdmin-configuratie. Maak geen lege volume aan om de deployment stateful te laten lijken; bewaar in plaats daarvan de exacte imagereferentie en de gecontroleerde configuratie.

Bouw phpMyAdmin opnieuw op een lege host en voer de acceptatietransactie uit. Recovery slaagt wanneer de beoogde MySQL-back-up onafhankelijk wordt hersteld en de opnieuw aangemaakte console verbinding kan maken met het bedoelde account met beperkte rechten. Elke gekoppelde database of collaboration service volgt zijn eigen application-consistent back-upplan, terwijl de vervangbare webcontainer vanuit code opnieuw wordt aangemaakt. De handleiding voor deployments van Git naar productie beschrijft die reproduceerbare grens.

Bewaar een checksum of digest voor de bekende, goedgekeurde image en test opnieuw na updates. Voor een stateless service is een succesvolle rebuild de restore-test; voor externe state moet het phpMyAdmin-runbook verwijzen naar de afzonderlijke eigenaar en recoveryprocedure.

Beperk de rechten van phpMyAdmin

Controleer na de eerste login wat een anonieme bezoeker, een gewone gebruiker en een administrator elk kunnen doen. De phpMyAdmin-fout die je moet voorkomen, is het publiek beschikbaar maken van willekeurige servers of het hergebruiken van database-rootcredentials. Het bedoelde beleid is de console beperken tot administrators, arbitrary-server mode alleen gebruiken wanneer dat nodig is en MySQL root niet inzetten voor routinewerk.

PMA_HOST is configuratie en geen secret; houd de waarde ervan expliciet en bescherm de afzonderlijke credentials die door phpMyAdmin worden gebruikt. Houd dependency-accounts gescheiden van gebruikersaccounts, blokkeer ongebruikte egress waar dat praktisch is en begrens werk dat wordt beïnvloed door uploadlimieten, PHP-geheugen, de grootte van browserresultaten en netwerklatentie naar MySQL.

Koppel phpMyAdmin aan de lifecycle van Dockup

Voor phpMyAdmin kan Dockup de route en het TLS-certificaat aanmaken, mounts behouden, secrets leveren en private network access tot MySQL of MariaDB op private networking plaatsen, terwijl de deployment naar Dockup of gekoppelde servers wordt uitgevoerd.

De release gate blijft de concrete phpMyAdmin-transactie: inloggen op MySQL via de private hostname, een query uitvoeren, een tabel exporteren en via de proxy een kleine dump importeren. Controleer ook de restorevoorwaarde: de beoogde MySQL-back-up wordt onafhankelijk hersteld en de opnieuw aangemaakte console kan verbinding maken met het bedoelde account met beperkte rechten. Deze twee controles laten zien of de deployment werkt en of deze kan worden hersteld.

Veelgestelde vragen

Wat heeft phpMyAdmin nodig voor een productie-deployment?

Route de phpMyAdmin-container op poort 80 via één HTTPS-origin. De vereiste voor het ondersteunende netwerk is private network access tot MySQL of MariaDB. Markeer phpMyAdmin pas als klaar wanneer je via de private hostname kunt inloggen op MySQL, een query kunt uitvoeren, een tabel kunt exporteren en via de proxy een kleine dump kunt importeren.

Welke phpMyAdmin-data hoort in een back-up?

De standaard phpMyAdmin-image heeft geen vereiste mount voor applicatiedata. Bewaar de deploymentconfiguratie en back-up gekoppelde state afzonderlijk; recovery slaagt wanneer de beoogde MySQL-back-up onafhankelijk wordt hersteld en de opnieuw aangemaakte console verbinding kan maken met het bedoelde account met beperkte rechten.

Heeft phpMyAdmin HTTPS nodig achter een reverse proxy?

Gebruik HTTPS voor de publieke phpMyAdmin-origin en houd poort 80 op de interne route. Pas de phpMyAdmin-instelling correct toe: bied de console aan via HTTPS op een beperkte administratieve hostname. Voor phpMyAdmin beschermt HTTPS credentials of gebruikerscontent tijdens transport en zorgt het voor consistent clientgedrag dat afhankelijk is van de origin.

Hoe moet je een phpMyAdmin-upgrade testen?

Herstel de huidige phpMyAdmin-state in een geïsoleerde deployment, pas de kandidaatversie toe en herhaal de acceptatietransactie. Let hier extra op, omdat phpMyAdmin grotendeels stateless is, maar versie wijzigingen kunnen beïnvloeden welke authentication plugins en MySQL-features worden ondersteund. Houd de vorige phpMyAdmin-image beschikbaar totdat de grens voor datamigratie en rollback duidelijk is.