docker: App-User statt root für DB-Connection nutzen
Bisher: Backend connectete als root (mit DB_ROOT_PASSWORD) – zu viele
Privilegien (GRANT ALL ON *.*).
Jetzt: Backend nutzt den App-User ${DB_USER}, den MariaDB beim ersten
Container-Start automatisch über MARIADB_USER/MARIADB_PASSWORD anlegt.
Dieser User bekommt von MariaDB direkt GRANT ALL PRIVILEGES auf
${DB_NAME}.* (= nur die OpenCRM-Datenbank, keine anderen Schemas).
Ausreichend für Prisma db push (DDL+DML auf opencrm.*),
nicht ausreichend für Schema-übergreifende Operationen oder
mysql.user-Manipulation – wie es sein soll.
DB_ROOT_PASSWORD bleibt für Adminer / Notfall-Wartung.
.env.example dokumentiert den Mechanismus.
Live-verifiziert:
- Container läuft mit DATABASE_URL=mysql://opencrm:***@db:3306/opencrm
- Prisma db push synced Schema
- Login + alle CRUD-Operationen funktionieren
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -18,6 +18,10 @@ FACTORY_DEFAULTS_DIR=./data/factory-defaults
|
||||
BACKUPS_DIR=./data/backups
|
||||
|
||||
# ============== DATENBANK ==============
|
||||
# Der App-User (DB_USER) wird beim ersten Start automatisch von MariaDB
|
||||
# angelegt (über MARIADB_USER/MARIADB_PASSWORD im docker-compose) – mit
|
||||
# GRANT ALL PRIVILEGES auf ${DB_NAME}.*. Damit nutzt das Backend NICHT root.
|
||||
# DB_ROOT_PASSWORD ist nur für Adminer / Notfall-Wartung.
|
||||
DB_HOST=localhost # Im Container überschreibt docker-compose das auf "db"
|
||||
DB_NAME=opencrm
|
||||
DB_USER=opencrm
|
||||
|
||||
+5
-2
@@ -48,8 +48,11 @@ services:
|
||||
db:
|
||||
condition: service_healthy
|
||||
environment:
|
||||
# Connection ins Container-Netzwerk (Service-Name = Hostname)
|
||||
DATABASE_URL: "mysql://${DB_USER}:${DB_ROOT_PASSWORD}@db:3306/${DB_NAME}"
|
||||
# Connection ins Container-Netzwerk (Service-Name = Hostname).
|
||||
# Wir nutzen den App-User ${DB_USER}, der von MariaDB beim ersten Start
|
||||
# automatisch mit GRANT ALL PRIVILEGES auf ${DB_NAME}.* angelegt wird
|
||||
# (über MARIADB_USER/MARIADB_PASSWORD). KEIN root für die App.
|
||||
DATABASE_URL: "mysql://${DB_USER}:${DB_PASSWORD}@db:3306/${DB_NAME}"
|
||||
JWT_SECRET: ${JWT_SECRET}
|
||||
JWT_EXPIRES_IN: ${JWT_EXPIRES_IN:-7d}
|
||||
ENCRYPTION_KEY: ${ENCRYPTION_KEY}
|
||||
|
||||
Reference in New Issue
Block a user