# phpMyAdmin Integration - Rezepte ## 🗄️ Datenbank-Verwaltung über Web-Interface phpMyAdmin ist jetzt in das Traefik-Setup integriert und ermöglicht eine benutzerfreundliche Verwaltung der MySQL-Datenbank über das Web. ## 🌐 Zugriff ### Produktions-Deployment (mit Traefik): ``` https://phpmyadmin.your-domain.com ``` ### Login-Daten: - **Server**: `mysql` (automatisch konfiguriert) - **Benutzername**: `root` - **Passwort**: Ihr `MYSQL_ROOT_PASSWORD` aus der `.env.production` ## 🔧 Konfiguration ### 1. Traefik Labels: ```yaml labels: - "traefik.enable=true" - "traefik.http.routers.phpmyadmin.rule=Host(`phpmyadmin.${DOMAIN}`)" - "traefik.http.routers.phpmyadmin.entrypoints=websecure" - "traefik.http.routers.phpmyadmin.tls.certresolver=letsencrypt" - "traefik.http.services.phpmyadmin.loadbalancer.server.port=80" ``` ### 2. Umgebungsvariablen: ```yaml environment: - PMA_HOST=mysql - PMA_PORT=3306 - PMA_USER=root - PMA_PASSWORD=${MYSQL_ROOT_PASSWORD} - UPLOAD_LIMIT=2G - MEMORY_LIMIT=2G - MAX_EXECUTION_TIME=0 ``` ## 🔒 Sicherheit ### Zusätzliche Authentifizierung (Optional): Um eine zusätzliche Sicherheitsebene hinzuzufügen, können Sie Basic Auth aktivieren: 1. **In der docker-compose.traefik.yml** die Zeile auskommentieren: ```yaml # - "traefik.http.routers.phpmyadmin.middlewares=auth" ``` 2. **Eigenes Passwort generieren**: ```bash # Passwort "secure123" hashen (ändern Sie das Passwort!) echo $(htpasswd -nbB admin "secure123") | sed -e s/\\$/\\$\\$/g ``` 3. **In Traefik-Labels verwenden**: ```yaml - "traefik.http.middlewares.auth.basicauth.users=admin:$$2y$$10$$..." ``` ## 🚀 Features ### Optimiert für große Datenbanken: - **Upload Limit**: 2GB für große SQL-Imports - **Memory Limit**: 2GB für komplexe Operationen - **Execution Time**: Unbegrenzt für lange Abfragen ### Funktionen: - ✅ SQL-Abfragen ausführen - ✅ Datenbank-Struktur verwalten - ✅ Daten importieren/exportieren - ✅ Rezepte-Daten durchsuchen - ✅ Backups erstellen - ✅ Performance-Monitoring ## 📊 Nützliche Abfragen ### Rezepte-Übersicht: ```sql SELECT r.Rezept_Nr, r.Titel, r.Datum, COUNT(z.ID) as Schritte FROM Rezepte r LEFT JOIN Zubereitung z ON r.Rezept_Nr = z.Rezept_Nr GROUP BY r.Rezept_Nr ORDER BY r.Datum DESC; ``` ### Zutaten-Statistik: ```sql SELECT z.Zutat, COUNT(*) as Verwendung FROM ingredients z GROUP BY z.Zutat ORDER BY Verwendung DESC LIMIT 20; ``` ### Bilder pro Rezept: ```sql SELECT r.Titel, COUNT(rb.id) as Anzahl_Bilder FROM Rezepte r LEFT JOIN rezepte_bilder rb ON r.Rezept_Nr = rb.rezept_nr GROUP BY r.Rezept_Nr ORDER BY Anzahl_Bilder DESC; ``` ## 🛠️ Deployment ### Mit Traefik starten: ```bash ./deploy-traefik.sh ``` ### Einzeln testen: ```bash docker-compose -f docker-compose.traefik.yml up phpmyadmin -d ``` ## 🔧 Troubleshooting ### Verbindungsprobleme: 1. **MySQL-Container prüfen**: ```bash docker-compose -f docker-compose.traefik.yml logs mysql ``` 2. **phpMyAdmin-Logs**: ```bash docker-compose -f docker-compose.traefik.yml logs phpmyadmin ``` 3. **Netzwerk-Konnektivität**: ```bash docker exec -it rezepte-phpmyadmin ping mysql ``` ### Häufige Probleme: - **"Cannot connect to MySQL"**: MySQL-Container noch nicht bereit - **SSL-Zertifikat fehlt**: Traefik benötigt Zeit für Let's Encrypt - **Login fehlgeschlagen**: MYSQL_ROOT_PASSWORD in .env.production prüfen ## 📁 Zusammenhang mit Rezepte-System ### Wichtige Tabellen: - **Rezepte**: Haupt-Rezeptdaten - **ingredients**: Zutaten und Mengen - **Zubereitung**: Zubereitungsschritte - **rezepte_bilder**: Bild-Metadaten ### Datenbank-Schema verstehen: phpMyAdmin hilft dabei, die Beziehungen zwischen den Tabellen zu visualisieren und komplexe Abfragen für Reports zu erstellen. --- **🎯 Ziel**: Professionelle Datenbank-Verwaltung mit sicherer Web-Oberfläche für das Rezepte-Management-System.