Files
hoerdle/scripts/fix-database-permissions.sh
Hördle Bot b51ad2ff1a docs: add troubleshooting guide and fix permissions script for database issues
- Introduced a comprehensive troubleshooting guide for common application errors, particularly focusing on database permission issues after migrating databases.
- Added a script to automate the fixing of database permissions, ensuring SQLite can write to the necessary files and directories.
- Included detailed steps for diagnosing and resolving various container and database-related problems to enhance user support.
2025-12-01 16:50:24 +01:00

76 lines
2.4 KiB
Bash
Executable File
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/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"