#!/bin/bash # Script zum Reparieren von Datenbank-Berechtigungen # Wichtig: Wenn eine Datenbank von einem anderen Server kopiert wurde, # müssen die Berechtigungen angepasst werden, damit SQLite schreiben kann. set -e echo "🔧 Repariere Datenbank-Berechtigungen..." # Datenbank-Pfad aus docker-compose.yml oder .env ermitteln DB_DIR="./data" DB_FILE="$DB_DIR/prod.db" # Prüfe ob Datenbankverzeichnis existiert if [ ! -d "$DB_DIR" ]; then echo "❌ Datenbankverzeichnis '$DB_DIR' existiert nicht!" echo " Erstelle Verzeichnis..." mkdir -p "$DB_DIR" fi # Prüfe ob Datenbankdatei existiert if [ ! -f "$DB_FILE" ]; then echo "⚠️ Datenbankdatei '$DB_FILE' existiert nicht!" echo " Das ist okay, wenn du eine neue Datenbank erstellst." echo "" echo " Setze Berechtigungen für das Verzeichnis..." else echo "✅ Datenbankdatei gefunden: $DB_FILE" fi # Setze Berechtigungen für Datenbankverzeichnis # SQLite braucht Schreibrechte auf: # 1. Die Datenbankdatei selbst # 2. Das Verzeichnis (für -wal und -shm Dateien) echo "📝 Setze Berechtigungen..." # Verzeichnis: Lesen, Schreiben, Ausführen für Owner und Gruppe chmod 775 "$DB_DIR" # Datenbankdatei: Lesen und Schreiben für Owner und Gruppe if [ -f "$DB_FILE" ]; then chmod 664 "$DB_FILE" # Auch für alle SQLite-temporären Dateien chmod 664 "$DB_DIR"/*.db-wal 2>/dev/null || true chmod 664 "$DB_DIR"/*.db-shm 2>/dev/null || true chmod 664 "$DB_DIR"/*.db-journal 2>/dev/null || true fi # Setze Besitzer (wichtig: Container läuft als root laut docker-compose.yml) # Aber falls ein bestimmter User benötigt wird: if [ -n "$SUDO_USER" ]; then echo "👤 Setze Besitzer auf: $SUDO_USER" chown -R "$SUDO_USER:$SUDO_USER" "$DB_DIR" else echo "ℹ️ Container läuft als root, keine Besitzer-Änderung nötig" fi # Prüfe aktuelle Berechtigungen echo "" echo "📋 Aktuelle Berechtigungen:" ls -lh "$DB_DIR"/*.db* 2>/dev/null || echo " (Keine .db Dateien gefunden)" echo "" echo "✅ Berechtigungen gesetzt!" echo "" echo "💡 Wichtig für SQLite:" echo " - Die Datenbankdatei braucht Schreibrechte (rw-rw-r--)" echo " - Das Verzeichnis braucht Schreibrechte (rwxrwxr-x)" echo " - SQLite erstellt temporäre Dateien (-wal, -shm) im gleichen Verzeichnis" echo "" echo "🔄 Starte Container neu, damit die Änderungen wirksam werden:" echo " docker compose restart hoerdle"