- Veröffentlicht am
- • How2-Tipps
MariaDB & MySQL: Datenbankstruktur exportieren, Datenbanken anlegen und Seed-Daten importieren
- Autor
-
-
- Benutzer
- tmueller
- Beiträge dieses Autors
- Beiträge dieses Autors
-
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:
- eine Datenbankstruktur exportierst
- eine neue Datenbank inkl. Benutzer anlegst
- 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.