für MySQL und MariaDB richtig einsetzen
PhpStorm enthält einen vollwertigen Datenbankclient, der TablePlus, phpMyAdmin oder DBeaver für die meisten Entwicklungsaufgaben ersetzt. Verbindungen einrichten, SQL mit Autovervollständigung schreiben, Schemas visualisieren und Dumps erstellen – alles ohne die IDE zu verlassen und mit direktem Kontext zur geöffneten PHP-Datei.
Inhaltsverzeichnis
- 1. Was die PhpStorm Database Tools leisten – und was nicht
- 2. Datenbankverbindung zu MySQL und MariaDB einrichten
- 3. Docker-Container als Datenbankquelle verbinden
- 4. SQL Console: Abfragen schreiben und ausführen
- 5. SQL-Autovervollständigung und Code-Intelligenz
- 6. Schema-Browser und Diagramme
- 7. Daten direkt im Tabellen-Editor bearbeiten
- 8. Dumps erzeugen und importieren
- 9. PhpStorm Database vs. externe Clients im Vergleich
- 10. Zusammenfassung
- 11. FAQ
1. Was die PhpStorm Database Tools leisten – und was nicht
PhpStorm enthält in der Ultimate-Edition vollständige Database Tools, die auf der DataGrip-Engine basieren. Das bedeutet: vollständige SQL-Autovervollständigung mit Tabellen- und Spaltennamen, Schema-Diagramme, einen Tabellen-Editor mit Inline-Bearbeitung, Import/Export und Dump-Erzeugung. Für die meisten Aufgaben in der täglichen Entwicklung ist das mehr als ausreichend. Der entscheidende Vorteil gegenüber externen Tools ist die Integration in den Editor: SQL-Abfragen in PHP-Strings werden mit Datenbankintelligenz angereichert, wenn die Verbindung konfiguriert ist.
Was die Database Tools nicht können: Sie sind kein Ersatz für Admintools bei Produktionsdatenbanken mit hohem Datenvolumen, wo spezialisierte GUI-Clients wie DBeaver bessere Visualisierungsoptionen bieten. Für einfache Schema-Migrationen in der Entwicklung und für das Debuggen von Magento-SQL-Abfragen sind sie aber hervorragend geeignet. Die PhpStorm Community Edition enthält die Database Tools nicht – dafür ist die Ultimate Edition erforderlich. Für professionelle PHP-Entwicklung ist das kein Hindernis, da Ultimate die Standardwahl für PHP-Projekte ist.
2. Datenbankverbindung zu MySQL und MariaDB einrichten
Die Verbindung wird über das Database-Fenster angelegt: View → Tool Windows → Database, dann das Plus-Symbol oben links, Data Source → MySQL (oder MariaDB). Im Dialog gibt man Host, Port (3306), Datenbankname, Benutzername und Passwort ein. Beim ersten Einrichten einer MySQL-Verbindung bietet PhpStorm an, den JDBC-Treiber automatisch herunterzuladen – diesen Download unbedingt durchführen, bevor man eine Verbindung testet. Der Klick auf Test Connection zeigt sofort, ob die Verbindung funktioniert und ob Treiber und Datenbankversion kompatibel sind.
Für MariaDB ist es wichtig, den Treiber explizit auf MariaDB einzustellen und nicht den MySQL-Treiber zu verwenden, da es bei neueren MariaDB-Versionen (10.6+) zu Inkompatibilitäten kommen kann. Im Reiter Advanced lassen sich Verbindungsparameter wie serverTimezone, useSSL und allowPublicKeyRetrieval konfigurieren. Unter Schemas wählt man aus, welche Datenbanken sichtbar sein sollen – bei Magento empfiehlt sich, nur die aktive Entwicklungsdatenbank zu aktivieren, damit die Autovervollständigung nicht durch andere Datenbanken verlangsamt wird.
3. Docker-Container als Datenbankquelle verbinden
Im Mark-Shust-Docker-Setup läuft MySQL im Container, ist aber über den exponierten Port auf localhost erreichbar. Die Verbindung in PhpStorm verwendet Host 127.0.0.1, Port 3306 (oder den in compose.yaml definierten Host-Port). Die Verbindungsdaten findet man in der env/db.env des Docker-Setups. Ein häufiger Fallstrick: Der Container muss beim Einrichten der Verbindung laufen, sonst schlägt der Test fehl und PhpStorm markiert die Verbindung als nicht erreichbar.
Alternativ kann man einen SSH-Tunnel konfigurieren, wenn der Datenbankcontainer keinen direkten Port auf localhost exponiert. PhpStorm unterstützt SSH-Tunnel direkt in der Datenbankverbindungskonfiguration unter dem Reiter SSH/SSL. Für die typische Docker-Compose-Entwicklungsumgebung ist jedoch der direkte Port-Ansatz einfacher. Sobald die Verbindung steht und PhpStorm das Datenbankschema geladen hat – was beim ersten Verbinden einige Sekunden dauern kann –, ist die Autovervollständigung in SQL-Konsolen und PHP-SQL-Strings aktiv.
<?php
// PhpStorm erkennt SQL in PHP-Strings und bietet Autovervollständigung
// wenn eine Datenbankverbindung konfiguriert und das Schema geladen ist.
declare(strict_types=1);
namespace Mironsoft\Catalog\Model\ResourceModel;
use Magento\Framework\Model\ResourceModel\Db\AbstractDb;
/**
* Custom product resource model with optimized queries.
*/
class Product extends AbstractDb
{
protected function _construct(): void
{
$this->_init('catalog_product_entity', 'entity_id');
}
/**
* Load active products by category ID with price filter.
* PhpStorm highlights table/column names from connected DB schema.
*/
public function getActiveByCategoryAndMaxPrice(int $categoryId, float $maxPrice): array
{
$connection = $this->getConnection();
// SQL string: PhpStorm provides autocompletion for table and column names
$select = $connection->select()
->from(['e' => $this->getMainTable()], ['entity_id', 'sku', 'name'])
->join(
['cp' => $this->getTable('catalog_category_product')],
'e.entity_id = cp.product_id',
[]
)
->where('cp.category_id = ?', $categoryId)
->where('e.type_id = ?', 'simple')
->order('e.entity_id ASC');
return $connection->fetchAll($select);
}
}
4. SQL Console: Abfragen schreiben und ausführen
Die SQL Console öffnet man mit einem Doppelklick auf die Datenbankverbindung oder über das Kontextmenü Open Console. Es lassen sich mehrere Konsolen gleichzeitig für dieselbe Verbindung öffnen, was bei komplexen Debugging-Sessions nützlich ist. Das Ausführen einer Abfrage geschieht mit Ctrl+Enter für die gesamte Datei oder für den markierten Block. Das Ergebnis erscheint unten im Ergebnisbereich als formatierte Tabelle mit Paginierung, Sortierung und Filterfunktion.
Ein besonders nützliches Feature ist die Abfragehistorie (Ctrl+Alt+E), die alle ausgeführten SQL-Statements mit Zeitstempel speichert. Bei Debugging-Sessions, wo man viele Varianten einer Abfrage durchprobiert, ist das ein echter Zeitgewinn. PhpStorm formatiert SQL-Abfragen automatisch mit Ctrl+Alt+L und unterstützt dabei MySQL- und MariaDB-spezifische Syntax. Erklärungspläne für Abfragen öffnet man mit Ctrl+Shift+E – der Plan wird als visuelles Diagramm oder als Text dargestellt, was bei der Performance-Analyse von Magento-Abfragen sehr hilfreich ist.
5. SQL-Autovervollständigung und Code-Intelligenz
Die Autovervollständigung in der SQL Console und in PHP-Strings mit SQL kennt alle Tabellen und Spalten der verbundenen Datenbank. Bei Magento 2 mit mehreren hundert Tabellen ist das ein erheblicher Vorteil: Statt catalog_product_entity_varchar mühsam abzutippen, reicht die Eingabe von cpe und PhpStorm schlägt alle Tabellen vor, die mit diesen Buchstaben beginnen. Die Autovervollständigung erkennt auch Aliase in komplexen JOINs und schlägt die korrekten Spalten für den jeweiligen Alias vor.
Für PHP-Strings aktiviert man die SQL-Injektion über einen Kommentar /** @lang SQL */ oder über den Kontext-Marker, den PhpStorm anbietet, wenn es SQL in einem String erkennt. Dann werden auch Tipp- und Syntaxfehler im SQL direkt in der PHP-Datei unterstrichen, bevor der Code überhaupt ausgeführt wird. Diese Integration zwischen PHP-Kontext und Datenbankschema ist ein Alleinstellungsmerkmal der PhpStorm Database Tools gegenüber externen Datenbank-Clients.
<?php
// SQL Console: Magento-2-Datenbank analysieren
-- Alle Konfigurationswerte anzeigen (core_config_data)
SELECT path, value, scope, scope_id
FROM core_config_data
WHERE path LIKE 'catalog/seo/%'
ORDER BY path;
-- Cache-Typen und Status prüfen
SELECT id, code, status, tags
FROM cache_tag
ORDER BY code
LIMIT 50;
-- Aktive Produkte in Kategorie zählen
SELECT cce.entity_id, cce.path, COUNT(ccp.product_id) AS product_count
FROM catalog_category_entity cce
LEFT JOIN catalog_category_product ccp ON cce.entity_id = ccp.category_id
WHERE cce.level > 1
GROUP BY cce.entity_id
HAVING product_count > 0
ORDER BY product_count DESC
LIMIT 20;
-- Erklärungsplan anzeigen (Ctrl+Shift+E in PhpStorm)
EXPLAIN SELECT e.entity_id, e.sku
FROM catalog_product_entity e
INNER JOIN catalog_category_product cp ON e.entity_id = cp.product_id
WHERE cp.category_id = 4
AND e.type_id = 'simple'\G
6. Schema-Browser und Diagramme
Im Database-Fenster lassen sich alle Tabellen, Views, Stored Procedures und Funktionen der verbundenen Datenbank durchsuchen und inspizieren. Ein Rechtsklick auf eine Tabelle → Diagrams → Show Visualization öffnet ein ER-Diagramm, das Foreign Keys als Verbindungslinien darstellt. Bei Magento 2 mit seinen komplexen EAV-Tabellenstrukturen ist das für die Orientierung sehr hilfreich. Das Diagramm lässt sich als Bild exportieren, was für Dokumentationszwecke nützlich ist.
Tabellenstrukturen können direkt im Schema-Browser angepasst werden: Rechtsklick auf eine Tabelle → Modify Table öffnet einen grafischen Editor für Spalten, Typen, Indizes und Foreign Keys. Das erzeugte DDL wird als Vorschau angezeigt, bevor es ausgeführt wird. Für Magento-2-Projekte ist diese direkte Manipulation der Datenbankstruktur jedoch mit Vorsicht zu verwenden – Schemaänderungen sollten immer über db_schema.xml und den Setup-Mechanismus von Magento erfolgen, nicht manuell über die Datenbank. Der Schema-Browser ist in diesem Kontext vor allem ein Lesewerkzeug.
7. Daten direkt im Tabellen-Editor bearbeiten
Ein Doppelklick auf eine Tabelle im Database-Fenster öffnet den Tabellen-Editor, der die Daten direkt als bearbeitbare Tabelle zeigt. Werte können inline geändert, neue Zeilen hinzugefügt und bestehende Zeilen gelöscht werden. Änderungen werden nicht sofort übernommen, sondern erst nach Klick auf den Submit-Button oder Ctrl+Enter – das gibt Gelegenheit, mehrere Änderungen zu bündeln. Die Rückgängig-Funktion Ctrl+Z macht Änderungen rückgängig, solange sie noch nicht abgeschickt wurden.
Der Tabellen-Editor unterstützt auch das Exportieren von Abfrageergebnissen: Rechtsklick auf den Ergebnisbereich → Export Data bietet CSV, JSON, SQL INSERT, HTML-Tabelle und weitere Formate. Das ist nützlich, wenn man Testdaten aus der Produktionsdatenbank (anonymisiert) in die Entwicklungsumgebung übertragen will. Filter im Tabellen-Editor funktionieren wie WHERE-Bedingungen: Man gibt einen Wert in die Filterzeile ein und PhpStorm erzeugt die entsprechende SQL-Abfrage automatisch.
8. Dumps erzeugen und importieren
Für Datenbankdumps bietet PhpStorm zwei Wege: Über das Kontextmenü der Datenbankverbindung → Export with 'mysqldump' oder über Export Data. Der mysqldump-Weg nutzt das lokal installierte mysqldump-Binary und erzeugt einen vollständigen Dump im MySQL-Format. Für Docker-Setups, wo mysqldump nur im Container verfügbar ist, ist der Direct-Export-Weg besser: Rechtsklick auf Datenbank → Export Data → SQL Inserts erzeugt ein reines SQL-Script mit INSERT-Statements ohne externe Abhängigkeiten.
Dumps importieren geht über Rechtsklick auf die Datenbankverbindung → Run SQL Script → Datei auswählen. PhpStorm führt das Script gegen die verbundene Datenbank aus und zeigt Fortschritt und Fehler im Konsolenfenster an. Für größere Dumps ist zu beachten, dass PhpStorm den JDBC-Treiber verwendet, der langsamer als der native MySQL-Client sein kann. Bei Dumps über 100 MB empfiehlt sich stattdessen der Wrapper bin/mysql aus dem Docker-Setup, der direkt im Container ausgeführt wird und deutlich schneller ist.
9. PhpStorm Database vs. externe Clients im Vergleich
Für die Entscheidung, wann PhpStorm Database Tools ausreichen und wann ein externer Client sinnvoller ist, hilft ein direkter Vergleich der wichtigsten Kriterien.
| Kriterium | PhpStorm Database | TablePlus / DBeaver | phpMyAdmin |
|---|---|---|---|
| PHP/SQL-Integration | Vollständig (SQL in PHP-Strings) | Keine | Keine |
| SQL-Autovervollständigung | Sehr gut (DataGrip-Engine) | Gut | Minimal |
| Große Datenmengen | JDBC, langsamer bei großen Dumps | Nativer Client, schneller | Langsam, Timeout-Probleme |
| Kosten | In Ultimate enthalten | Separat kostenpflichtig | Kostenlos |
| Fensterwechsel | Kein (alles in der IDE) | Ja, extra Fenster | Browser-Tab-Wechsel |
Das Fazit ist eindeutig: Für die tägliche Entwicklungsarbeit, wo man zwischen PHP-Code und Datenbankabfragen wechselt, sind die PhpStorm Database Tools die beste Wahl. Für spezifische Aufgaben wie großvolumige Dumps oder umfangreiche Schema-Migrationen in der Produktion ist ein nativer Client sinnvoll. phpMyAdmin sollte für neue Projekte möglichst vermieden werden – die Sicherheitshistorie und die geringe Produktivität stehen einem anderen Setup im Weg.
Mironsoft
Magento-2-Entwicklung, PhpStorm-Setup und Datenbankoptimierung
Magento-Datenbank gezielt analysieren und optimieren?
Wir richten PhpStorm Database Tools für Magento-2-Projekte ein und analysieren Abfragepläne, identifizieren fehlende Indizes und optimieren langsame Produktkatalog-Abfragen direkt aus der IDE.
DB-Setup
Verbindungseinrichtung und Schema-Synchronisation für Magento-2-Docker
Query-Analyse
Abfragepläne auswerten, fehlende Indizes finden, N+1-Probleme erkennen
Dump-Workflow
Anonymisierte Produktionsdumps erzeugen und in die Entwicklung importieren
10. Zusammenfassung
Die PhpStorm Database Tools sind für PHP-Entwickler, die täglich mit MySQL oder MariaDB arbeiten, eine vollwertige Alternative zu externen Datenbankclients. Die Integration in den Editor – SQL-Autovervollständigung in PHP-Strings, klickbare Fehlermeldungen, direkter Ergebnisvergleich mit dem Code – spart Kontextwechsel und reduziert Tipp- und Denkfehler. Für Magento-2-Projekte mit Docker ist die Verbindung über den exponierten Port auf localhost der einfachste Weg, das Schema zu laden und Abfragen mit Autovervollständigung zu schreiben.
Die Grenzen liegen bei großen Dateimengen und Produktionsdatenbanken, wo native Clients schneller und sicherer sind. Für Dumps über 100 MB empfiehlt sich der Docker-Wrapper bin/mysqldump statt des JDBC-basierten Exports aus PhpStorm. Schemaänderungen gehören in Magento 2 immer in db_schema.xml, nicht in die manuelle Tabelleneditierung. Innerhalb dieser Grenzen sind die Database Tools ein zentraler Produktivitätshebel für die Entwicklung.
PhpStorm Database Tools — Das Wichtigste auf einen Blick
Verbindung einrichten
View → Database → + → MySQL/MariaDB. JDBC-Treiber beim ersten Verbinden automatisch herunterladen lassen. Docker: Host 127.0.0.1, Port aus compose.yaml.
SQL Console
Ctrl+Enter führt Abfrage aus. Ctrl+Shift+E zeigt Erklärungsplan. Ctrl+Alt+E öffnet Abfragehistorie. Autovervollständigung mit Tabellen- und Spaltennamen.
Dumps
Für kleine Dumps: Export Data → SQL Inserts direkt aus PhpStorm. Für große Dumps (>100 MB): Docker-Wrapper bin/mysqldump verwenden.
Schemaänderungen
In Magento 2 immer über db_schema.xml. PhpStorm Database ist Lesewerkzeug für Schema-Analyse, kein Ersatz für deklaratives Schema.