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
249 lines
4.4 KiB
Markdown
249 lines
4.4 KiB
Markdown
# MySQL Datenbank Setup für TimeClock
|
|
|
|
## 1. MySQL Installation prüfen
|
|
|
|
```bash
|
|
# MySQL Version prüfen
|
|
mysql --version
|
|
|
|
# Falls nicht installiert (openSUSE):
|
|
sudo zypper install mysql mysql-server
|
|
|
|
# MySQL-Server starten
|
|
sudo systemctl start mysql
|
|
sudo systemctl enable mysql
|
|
```
|
|
|
|
## 2. MySQL Root-Passwort setzen (falls nötig)
|
|
|
|
```bash
|
|
# MySQL Secure Installation ausführen
|
|
sudo mysql_secure_installation
|
|
|
|
# Folgende Fragen beantworten:
|
|
# - Set root password? [Y/n] Y
|
|
# - Remove anonymous users? [Y/n] Y
|
|
# - Disallow root login remotely? [Y/n] Y
|
|
# - Remove test database? [Y/n] Y
|
|
# - Reload privilege tables? [Y/n] Y
|
|
```
|
|
|
|
## 3. Datenbank und Benutzer erstellen
|
|
|
|
### Option A: Automatisches Setup-Script
|
|
|
|
```bash
|
|
cd /home/torsten/Programs/TimeClock/backend
|
|
chmod +x setup-mysql.sh
|
|
./setup-mysql.sh
|
|
```
|
|
|
|
Das Script fragt nach:
|
|
- MySQL Root-Passwort
|
|
- Neuem Datenbank-Benutzer (Standard: timeclock_user)
|
|
- Neuem Benutzer-Passwort
|
|
|
|
### Option B: Manuelles Setup
|
|
|
|
```bash
|
|
# MySQL als root einloggen
|
|
mysql -u root -p
|
|
```
|
|
|
|
Dann in der MySQL-Konsole:
|
|
|
|
```sql
|
|
-- 1. Datenbank erstellen
|
|
CREATE DATABASE IF NOT EXISTS stechuhr2
|
|
CHARACTER SET utf8mb4
|
|
COLLATE utf8mb4_unicode_ci;
|
|
|
|
-- 2. Benutzer erstellen (Passwort anpassen!)
|
|
CREATE USER IF NOT EXISTS 'timeclock_user'@'localhost'
|
|
IDENTIFIED BY 'IhrSicheresPasswort123!';
|
|
|
|
-- 3. Berechtigungen vergeben
|
|
GRANT ALL PRIVILEGES ON stechuhr2.*
|
|
TO 'timeclock_user'@'localhost';
|
|
|
|
-- 4. Privilegien neu laden
|
|
FLUSH PRIVILEGES;
|
|
|
|
-- 5. Prüfen
|
|
SHOW DATABASES;
|
|
SELECT User, Host FROM mysql.user WHERE User='timeclock_user';
|
|
|
|
-- 6. Verlassen
|
|
EXIT;
|
|
```
|
|
|
|
## 4. Tabellen erstellen
|
|
|
|
Die Tabellen existieren bereits in Ihrer DB. Falls Sie sie neu erstellen möchten:
|
|
|
|
```bash
|
|
# SQL-Dump importieren (falls vorhanden)
|
|
mysql -u timeclock_user -p stechuhr2 < database-schema.sql
|
|
```
|
|
|
|
Oder mit dem automatischen Migrations-Script:
|
|
|
|
```bash
|
|
cd /home/torsten/Programs/TimeClock/backend
|
|
node scripts/create-tables.js
|
|
```
|
|
|
|
## 5. .env Datei konfigurieren
|
|
|
|
```bash
|
|
cd /home/torsten/Programs/TimeClock/backend
|
|
nano .env
|
|
```
|
|
|
|
Setzen Sie folgende Werte:
|
|
|
|
```env
|
|
DB_HOST=localhost
|
|
DB_PORT=3306
|
|
DB_USER=timeclock_user
|
|
DB_PASSWORD=IhrSicheresPasswort123!
|
|
DB_NAME=stechuhr2
|
|
```
|
|
|
|
## 6. Verbindung testen
|
|
|
|
```bash
|
|
# Mit neuen Credentials verbinden
|
|
mysql -u timeclock_user -p stechuhr2
|
|
|
|
# In MySQL-Konsole:
|
|
SHOW TABLES;
|
|
EXIT;
|
|
```
|
|
|
|
## 7. Server starten
|
|
|
|
```bash
|
|
cd /home/torsten/Programs/TimeClock
|
|
npm run dev
|
|
```
|
|
|
|
**Erwartete Ausgabe:**
|
|
```
|
|
✅ Sequelize: MySQL-Datenbankverbindung hergestellt
|
|
✅ Sequelize: Models initialisiert
|
|
🕐 TimeClock Server läuft auf Port 3010
|
|
```
|
|
|
|
## Troubleshooting
|
|
|
|
### "Access denied for user"
|
|
|
|
```bash
|
|
# Berechtigungen prüfen
|
|
mysql -u root -p
|
|
```
|
|
|
|
```sql
|
|
SHOW GRANTS FOR 'timeclock_user'@'localhost';
|
|
-- Falls leer: Berechtigungen neu vergeben (siehe Schritt 3)
|
|
```
|
|
|
|
### "Unknown database stechuhr2"
|
|
|
|
```bash
|
|
mysql -u root -p
|
|
```
|
|
|
|
```sql
|
|
CREATE DATABASE stechuhr2;
|
|
```
|
|
|
|
### "Can't connect to MySQL server"
|
|
|
|
```bash
|
|
# MySQL-Status prüfen
|
|
sudo systemctl status mysql
|
|
|
|
# Starten falls gestoppt
|
|
sudo systemctl start mysql
|
|
```
|
|
|
|
### Port 3306 bereits belegt
|
|
|
|
```bash
|
|
# Prüfen was auf Port 3306 läuft
|
|
sudo ss -tlnp | grep 3306
|
|
|
|
# MySQL-Port ändern (in /etc/my.cnf)
|
|
[mysqld]
|
|
port=3307
|
|
```
|
|
|
|
## Schnell-Setup für Entwicklung
|
|
|
|
Falls Sie nur schnell testen möchten:
|
|
|
|
```bash
|
|
# MySQL als root ohne Passwort
|
|
mysql -u root
|
|
|
|
CREATE DATABASE stechuhr2;
|
|
EXIT;
|
|
```
|
|
|
|
Dann in `.env`:
|
|
```env
|
|
DB_USER=root
|
|
DB_PASSWORD=
|
|
DB_NAME=stechuhr2
|
|
```
|
|
|
|
⚠️ **Nicht für Produktion verwenden!**
|
|
|
|
## Existierende stechuhr2 DB verwenden
|
|
|
|
Falls Sie bereits eine `stechuhr2` Datenbank haben:
|
|
|
|
```bash
|
|
# Prüfen Sie die Credentials
|
|
mysql -u IHR_USER -p stechuhr2
|
|
|
|
# Tabellen anzeigen
|
|
SHOW TABLES;
|
|
```
|
|
|
|
Dann in `.env`:
|
|
```env
|
|
DB_USER=IHR_EXISTIERENDER_USER
|
|
DB_PASSWORD=IHR_EXISTIERENDES_PASSWORT
|
|
DB_NAME=stechuhr2
|
|
```
|
|
|
|
## Benutzer erstellen (Template)
|
|
|
|
```sql
|
|
-- Benutzer mit vollem Zugriff
|
|
CREATE USER 'timeclock_user'@'localhost' IDENTIFIED BY 'Passwort123';
|
|
GRANT ALL PRIVILEGES ON stechuhr2.* TO 'timeclock_user'@'localhost';
|
|
FLUSH PRIVILEGES;
|
|
|
|
-- Nur Lese-Zugriff (optional)
|
|
CREATE USER 'timeclock_readonly'@'localhost' IDENTIFIED BY 'Passwort123';
|
|
GRANT SELECT ON stechuhr2.* TO 'timeclock_readonly'@'localhost';
|
|
FLUSH PRIVILEGES;
|
|
```
|
|
|
|
## Backup erstellen
|
|
|
|
```bash
|
|
# Vor Änderungen immer Backup!
|
|
mysqldump -u timeclock_user -p stechuhr2 > backup_$(date +%Y%m%d_%H%M%S).sql
|
|
|
|
# Restore
|
|
mysql -u timeclock_user -p stechuhr2 < backup_20251015_143000.sql
|
|
```
|
|
|
|
|
|
|