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
This commit is contained in:
248
backend/MYSQL_SETUP.md
Normal file
248
backend/MYSQL_SETUP.md
Normal file
@@ -0,0 +1,248 @@
|
||||
# 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
|
||||
```
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user