open-how2 – Entdecke. Verstehe. Nutze.
Veröffentlicht am
How2-Tipps

MariaDB & MySQL: Datenbankstruktur exportieren, Datenbanken anlegen und Seed-Daten importieren

Autor
MariaDB & MySQL: Datenbankstruktur exportieren, Datenbanken anlegen und Seed-Daten importieren

Einleitung

Wer mit MariaDB oder MySQL arbeitet – egal ob im DevOps-, Web- oder KI-Umfeld – kommt früher oder später an den Punkt, an dem Datenbanken repliziert, migriert oder neu aufgesetzt werden müssen.

Typische Szenarien:

  • Migration von Entwicklungs- in Produktionsumgebungen
  • Aufbau von Testsystemen
  • Deployment automatisierter Anwendungen
  • Wiederherstellung von Systemen

In diesem Artikel zeige ich dir komplett durchgängig, wie du:

  1. eine Datenbankstruktur exportierst
  2. eine neue Datenbank inkl. Benutzer anlegst
  3. Seed-Daten importierst

Alles direkt über die Konsole – genau so, wie du es für Automatisierung brauchst.

1. Datenbankstruktur exportieren (ohne Daten)

Wenn du nur die Struktur (Tabellen, Indizes, Constraints etc.) exportieren willst, nutzt du mysqldump mit der Option --no-data.

🔧 Befehl

mysqldump -u BENUTZER -p --no-data DATENBANKNAME > struktur.sql

Beispiel:

mysqldump -u root -p --no-data meine_datenbank > struktur.sql

Was wird exportiert?

  • Tabellenstruktur
  • Indizes
  • Primary Keys
  • Foreign Keys
  • Auto-Increment
  • Constraints

Keine Daten!

Erweiterte Variante (empfohlen)

Wenn du wirklich eine vollständige Struktur sichern willst:

mysqldump -u root -p --no-data --routines --triggers --events meine_datenbank > struktur.sql

Damit bekommst du zusätzlich:

  • Stored Procedures
  • Trigger
  • Events

Wichtig für komplexe Anwendungen (z. B. mit Business-Logik in der DB)

2. Neue Datenbank + Benutzer anlegen

Jetzt brauchst du eine Zielumgebung.

One-Liner (ideal für Skripte)

mysql -u root -p -e "CREATE DATABASE neue_datenbank CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; CREATE USER 'neuer_user'@'localhost' IDENTIFIED BY 'sicheres_passwort'; GRANT ALL PRIVILEGES ON neue_datenbank.* TO 'neuer_user'@'localhost'; FLUSH PRIVILEGES;"

Schrittweise (übersichtlicher)

mysql -u root -p

Dann:

CREATE DATABASE neue_datenbank
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;

CREATE USER 'neuer_user'@'localhost'
IDENTIFIED BY 'sicheres_passwort';

GRANT ALL PRIVILEGES ON neue_datenbank.* 
TO 'neuer_user'@'localhost';

FLUSH PRIVILEGES;

Remote-Zugriff erlauben (optional)

CREATE USER 'neuer_user'@'%' IDENTIFIED BY 'sicheres_passwort';
GRANT ALL PRIVILEGES ON neue_datenbank.* TO 'neuer_user'@'%';

Achtung: % bedeutet Zugriff von überall → nur bewusst einsetzen!

3. Struktur importieren

Jetzt spielst du die zuvor exportierte Struktur wieder ein:

mysql -u neuer_user -p neue_datenbank < struktur.sql

4. Seed-Daten importieren

Für initiale Daten (z. B. Konfigurationen, Testdaten, Defaults):

mysql -u neuer_user -p neue_datenbank < seed_data.sql

Mit Host und Port

mysql -h 127.0.0.1 -P 3306 -u neuer_user -p neue_datenbank < seed_data.sql

Für große Dateien

mysql --max_allowed_packet=512M -u neuer_user -p neue_datenbank < seed_data.sql

Typischer Gesamt-Workflow

So sieht ein kompletter Ablauf in der Praxis aus:

1. Struktur exportieren

mysqldump -u root -p --no-data meine_datenbank > struktur.sql

2. Neue DB + User erstellen

mysql -u root -p -e "CREATE DATABASE neue_datenbank; ..."

3. Struktur importieren

mysql -u neuer_user -p neue_datenbank < struktur.sql

4. Seed-Daten importieren

mysql -u neuer_user -p neue_datenbank < seed_data.sql

Best Practices

Sicherheit

  • Niemals Passwörter im Klartext in Skripten speichern
  • Statt % lieber konkrete IPs nutzen
  • Minimalprinzip bei Rechten anwenden

Struktur vs. Daten trennen

  • Struktur → versionierbar (Git!)
  • Seed-Daten → reproduzierbar
  • Produktivdaten → Backup

Automatisierung

Perfekt geeignet für:

  • CI/CD Pipelines
  • Setup-Skripte
  • Docker/VM Provisioning
  • Deployment-Prozesse

Typische Fehler

Fehler Ursache
Import schlägt fehl DB existiert nicht
Zeichensalat falsches Charset
Trigger fehlen --triggers vergessen
Rechteprobleme GRANT fehlt

Mit wenigen Befehlen kannst du:

  • komplette Datenbankstrukturen sauber exportieren
  • neue Datenbanken reproduzierbar aufbauen
  • Seed-Daten automatisiert einspielen

👉 Genau das ist die Grundlage für saubere Deployments, stabile Systeme und reproduzierbare Umgebungen.

Gerade in komplexeren Projekten (z. B. mit Bots, Crawling-Systemen oder KI-Plattformen) wird diese Trennung aus Struktur + Seed-Daten schnell zum absoluten Gamechanger.