Files
Rezepte/PHPMYADMIN_SETUP.md
2025-09-22 16:35:59 +02:00

156 lines
3.8 KiB
Markdown

# phpMyAdmin Integration - Rezepte Klaus
## 🗄️ 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.