156 lines
3.8 KiB
Markdown
156 lines
3.8 KiB
Markdown
# 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. |