# 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.