IDE
{ }
PhpStorm · MySQL · MariaDB · SQL · Magento 2
Database Tools in PhpStorm
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.

14 Min. Lesezeit Database Console · Schema-Diagramme · Dumps · SQL-Autovervollständigung PhpStorm 2024.x · MySQL 8.x · MariaDB 11.x

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.

11. FAQ: Database Tools in PhpStorm

1Database Tools kostenlos in PhpStorm?
In Ultimate enthalten, nicht in Community. Für professionelle PHP-Entwicklung ist Ultimate die Standardlizenz.
2MySQL in Docker verbinden?
Host 127.0.0.1, Port aus compose.yaml, Zugangsdaten aus env/db.env. Container muss laufen. JDBC-Treiber beim ersten Verbinden herunterladen.
3SQL-Autovervollständigung in PHP-Strings?
Verbindung einrichten, Schema laden. Im PHP-String /** @lang SQL */ Kommentar hinzufügen – dann Tabellen- und Spaltennamen mit Autovervollständigung.
4Datenbankdumps aus PhpStorm?
Export Data → SQL Inserts für kleine Dumps. Für >100 MB den Docker-Wrapper bin/mysqldump verwenden – schneller als JDBC-Export.
5Erklärungsplan öffnen?
Cursor in der Abfrage, dann Ctrl+Shift+E. Plan als visuelles Diagramm oder Text – hilfreich zur Performance-Analyse von Magento-Abfragen.
6MySQL- vs. MariaDB-Treiber?
Ab MariaDB 10.6+ den MariaDB-Treiber explizit wählen. MySQL-Connector/J hat Inkompatibilitäten mit neueren MariaDB-Versionen.
7Tabellendaten direkt bearbeiten?
Doppelklick auf Tabelle → Inline-Editor. Ctrl+Enter sendet Änderungen. Ctrl+Z rückgängig, solange noch nicht abgeschickt.
8Magento-Schema über PhpStorm ändern?
Nein. Immer über db_schema.xml und bin/magento setup:upgrade. PhpStorm Database ist Lesewerkzeug für Analyse.
9Nur bestimmte Datenbanken anzeigen?
Verbindungseinstellungen → Reiter Schemas → nur aktive Entwicklungsdatenbank auswählen. Autovervollständigung wird damit deutlich schneller.
10Ergebnisse als CSV exportieren?
Rechtsklick auf Ergebnisbereich → Export Data → CSV. Trennzeichen und Encoding konfigurierbar. Ideal für Testdaten und Reports.