Files
stechuhr3/backend/setup-mysql.sh
Torsten Schulz (local) e95bb4cb76 Initial commit: TimeClock v3 - Node.js/Vue.js Zeiterfassung
Features:
- Backend: Node.js/Express mit MySQL/MariaDB
- Frontend: Vue.js 3 mit Composition API
- UTC-Zeithandling für korrekte Zeiterfassung
- Timewish-basierte Überstundenberechnung
- Wochenübersicht mit Urlaubs-/Krankheits-/Feiertagshandling
- Bereinigtes Arbeitsende (Generell/Woche)
- Überstunden-Offset für historische Daten
- Fixed Layout mit scrollbarem Content
- Kompakte UI mit grünem Theme
2025-10-17 14:11:28 +02:00

157 lines
3.6 KiB
Bash
Executable File

#!/bin/bash
# TimeClock MySQL Setup Script
# Erstellt automatisch Datenbank und Benutzer
set -e
echo "🕐 TimeClock - MySQL Setup"
echo "=========================="
echo ""
# Farben für Output
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color
# Standardwerte
DB_NAME="stechuhr2"
DEFAULT_USER="timeclock_user"
DEFAULT_PASSWORD="timeclock_dev_2025"
echo "Dieses Script erstellt:"
echo " - Datenbank: $DB_NAME"
echo " - Benutzer: $DEFAULT_USER"
echo ""
# MySQL Root-Passwort abfragen
read -sp "MySQL Root-Passwort eingeben: " MYSQL_ROOT_PASSWORD
echo ""
echo ""
# Test MySQL-Verbindung
echo "Teste MySQL-Verbindung..."
if ! mysql -u root -p"$MYSQL_ROOT_PASSWORD" -e "SELECT 1;" &> /dev/null; then
echo -e "${RED}❌ Fehler: MySQL-Verbindung fehlgeschlagen${NC}"
echo "Bitte prüfen Sie:"
echo " - MySQL Server läuft: sudo systemctl status mysql"
echo " - Root-Passwort ist korrekt"
exit 1
fi
echo -e "${GREEN}✅ MySQL-Verbindung erfolgreich${NC}"
echo ""
# Benutzer-Credentials abfragen
read -p "Datenbank-Benutzer [$DEFAULT_USER]: " DB_USER
DB_USER=${DB_USER:-$DEFAULT_USER}
read -sp "Passwort für '$DB_USER' [$DEFAULT_PASSWORD]: " DB_PASSWORD
echo ""
DB_PASSWORD=${DB_PASSWORD:-$DEFAULT_PASSWORD}
echo ""
# Datenbank und Benutzer erstellen
echo "Erstelle Datenbank und Benutzer..."
mysql -u root -p"$MYSQL_ROOT_PASSWORD" <<MYSQL_SCRIPT
-- Datenbank erstellen
CREATE DATABASE IF NOT EXISTS $DB_NAME
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;
-- Benutzer erstellen (falls existiert, überspringen)
CREATE USER IF NOT EXISTS '$DB_USER'@'localhost'
IDENTIFIED BY '$DB_PASSWORD';
-- Berechtigungen vergeben
GRANT ALL PRIVILEGES ON $DB_NAME.*
TO '$DB_USER'@'localhost';
-- Privilegien neu laden
FLUSH PRIVILEGES;
-- Info ausgeben
SELECT 'Datenbank erstellt' AS Status;
SHOW DATABASES LIKE '$DB_NAME';
SELECT User, Host FROM mysql.user WHERE User='$DB_USER';
MYSQL_SCRIPT
if [ $? -eq 0 ]; then
echo -e "${GREEN}✅ Datenbank und Benutzer erfolgreich erstellt${NC}"
echo ""
else
echo -e "${RED}❌ Fehler beim Erstellen${NC}"
exit 1
fi
# .env Datei erstellen/aktualisieren
ENV_FILE=".env"
echo "Aktualisiere .env Datei..."
cat > "$ENV_FILE" <<ENV_CONTENT
# Server-Konfiguration
PORT=3010
NODE_ENV=development
# MySQL Datenbank-Verbindung
DB_HOST=localhost
DB_PORT=3306
DB_USER=$DB_USER
DB_PASSWORD=$DB_PASSWORD
DB_NAME=$DB_NAME
# Datenbank-Optionen
DB_LOGGING=false
DB_TIMEZONE=+01:00
DB_POOL_MAX=10
DB_POOL_MIN=0
# JWT-Konfiguration
JWT_SECRET=timeclock-dev-secret-change-in-production-12345
JWT_EXPIRATION=24h
# E-Mail-Konfiguration (für Passwort-Reset)
SMTP_HOST=smtp.gmail.com
SMTP_PORT=587
SMTP_USER=
SMTP_PASSWORD=
SMTP_FROM=noreply@timeclock.com
ENV_CONTENT
echo -e "${GREEN}✅ .env Datei erstellt${NC}"
echo ""
# Test-Verbindung
echo "Teste Verbindung mit neuen Credentials..."
if mysql -u "$DB_USER" -p"$DB_PASSWORD" "$DB_NAME" -e "SELECT 1;" &> /dev/null; then
echo -e "${GREEN}✅ Verbindung erfolgreich!${NC}"
else
echo -e "${RED}❌ Verbindung fehlgeschlagen${NC}"
exit 1
fi
echo ""
# Zusammenfassung
echo "=========================="
echo -e "${GREEN}🎉 Setup abgeschlossen!${NC}"
echo ""
echo "Ihre Konfiguration:"
echo " Datenbank: $DB_NAME"
echo " Benutzer: $DB_USER"
echo " Host: localhost:3306"
echo ""
echo "Die .env Datei wurde erstellt mit den Zugangsdaten."
echo ""
echo "Nächste Schritte:"
echo " 1. Server starten: npm run dev"
echo " 2. Browser öffnen: http://localhost:5010"
echo ""
echo "Erste Schritte:"
echo " 1. Account registrieren unter /register"
echo " 2. Einloggen und Timer starten"
echo ""