phpMyAdmin: Zusatzfunktionen aktivieren mit dem Configuration Storage

phpMyAdmin: Diverse sinnvolle Zusatzfunktionen sind standardmässig nicht verfügbar
phpMyAdmin: Diverse sinnvolle Zusatzfunktionen sind standardmässig nicht verfügbar

Der Datenbank-Manager phpMyAdmin verfügt über einige nützliche Funktionen, welche insbesondere die Arbeit mit Beziehungen vereinfachen. Leider sind sie in der Standardinstallation nicht verfügbar. Dieser Artikel beschreibt zunächst einige dieser Funktionen und zeigt dann, wie man den dafür erforderlichen phpMyAdmin Configuration Storage konfiguriert.

Zusatzspalten in Fremdschlüssel-Dropdowns

phpMyAdmin: Fremdschlüsselwerte mit Zusatzspalte im Dropdown

Nehmen wir an, wir haben eine Beziehung zwischen den Tabellen company und employee definiert. Jeder Angestellte soll dabei genau einer Firma zugeordnet werden, eine Firma kann eine beliebige Anzahl von Angestellten haben. Somit wird der Primärschlüssel aus der Tabelle company als Fremdschlüssel in der Tabelle employee hinterlegt, und ein Foreign Key Constraint (= dt. Beschränkung für auswärtige Schlüssel) stellt sicher, dass nur gültige Fremdschlüssel-Werte eingetragen werden.

Geht es nun an die Erfassung der Angestellten, dann ist die Zuordnung zu einer Firma etwas mühsam, weil man die ID (also den Primärschüsselwert) der Firmen kennen muss. Viel einfacher ist es, wenn im Dropdown nicht nur die IDs, sondern eine Zusatzinformation wie z.B. der Firmenname angezeigt wird (vgl. obigen Screenshot).

phpMyAdmin: Anzuzeigende Spalte auswählen

Ist der Configuration Storage konfiguriert, dann geht dies ganz einfach: Man muss lediglich in der Parent Table die anzuzeigende Spalte (engl. Choose column to display) auswählen. Diese Einstellmöglichkeit befindet sich auf der Seite Beziehungsübersicht unterhalb der Tabellenverknüpfungen.

Grafisches Datenbankschema im phpMyAdmin Designer

Grafische Datenbankstruktur im phpMyAdmin Designer

Der phpMyAdmin Designer bietet eine grafische Darstellung der Tabellen und Beziehungen in einer Datenbank, wie man sie auch von anderen Datenbank-Tools her kennt. Hier kann man sich nicht nur einen guten Überblick über Tabellenverknüpfungen verschaffen, sondern auch solche erstellen. Der Designer ist über einen eigenen Tab in phpMyAdmin aufrufbar.

Datenbank-Abfragen permanent speichern

phpMyAdmin: SQL-Abfragen speichern

Muss man dieselbe Abfrage wiederholt ausführen, dann ist die Speicherfunktion für SQL-Statements praktisch. Die entsprechende Funktion wird in phpMyAdmin auch als Bookmark bezeichnet, was vielleicht etwas irreführend ist, aber den Nutzen nicht schmälert. Einmal gespeicherte Abfragen stehen dann im Tab “SQL” zur Verfügung und können von dort nicht nur erneut ausgeführt, sondern auch bearbeitet und gelöscht werden.

phpMySQL: Gespeicherte SQL-Abfragen ausführen

Nachverfolgung von Änderungen

phpMyAdmin: Verfolgungsbericht

Über den Tab Nachverfolgung besteht die Möglichkeit, Änderungen an der Datenbank bezüglich Struktur (Data Definition) und Daten (Data Manipulation) aufzuzeichnen und nachzuvollziehen. Möchte man später zu einem bestimmten Stand der Datenbank zurückkehren, kann man manuell eine Version erzeugen. Jede Version umfasst einen Schnappschuss der Datenbankstruktur sowie einen Bericht über alle Datenmanipulationen seit der letzten Version.

Der phpMyAdmin Configuration Storage

Wie bereits einleitend erwähnt setzen alle diese Funktionen den phpMyAdmin Configuration Storage voraus. Dahinter verbirgt sich nichts anderes als eine spezielle Datenbank auf dem MySQL Server, in der phpMyAdmin alle anfallenden Metadaten speichert. Normalerweise heisst diese Datenbank phpmyadmin (in früheren Versionen pmadb), sie kann aber auch umbenannt werden. Zudem muss auf dem MySQL Server ein spezieller Benutzer existieren, der sogenannte Control User. Und schliesslich müssen gewisse Parameter in der Konfigurationsdatei config.inc.php richtig gesetzt sein.

Datenbank phpmyadmin anlegen

Tabellen der Datenbank phpmyadminDie Struktur der Datenbank phpmyadmin ist in der Datei create_tables.sql definiert, welche im Installationsverzeichnis von phpMyAdmin im Unterverzeichnis examples liegt. Importieren Sie ganz einfach diese Datei; das Resultat sollte eine neue Datenbank mit den nebenstehenden Tabellen sein. Prüfen Sie zur Sicherheit, ob die Tabellennamen mit pma_ (nur 1 Underscore) oder mit pma__ (2 Underscores) beginnen und passen Sie ggf. die Konfigurationsdatei (siehe unten) entsprechend an.

Control User anlegen

Auch den Control User müssen sie nicht manuell konfigurieren, sondern können ganz einfach das folgende SQL Statement ausführen:

GRANT USAGE ON mysql.* TO 'pma'@'localhost' IDENTIFIED BY 'pmapass';
 GRANT SELECT (
 Host, User, Select_priv, Insert_priv, Update_priv, Delete_priv,
 Create_priv, Drop_priv, Reload_priv, Shutdown_priv, Process_priv,
 File_priv, Grant_priv, References_priv, Index_priv, Alter_priv,
 Show_db_priv, Super_priv, Create_tmp_table_priv, Lock_tables_priv,
 Execute_priv, Repl_slave_priv, Repl_client_priv
 ) ON mysql.user TO 'pma'@'localhost';
 GRANT SELECT ON mysql.db TO 'pma'@'localhost';
 GRANT SELECT ON mysql.host TO 'pma'@'localhost';
 GRANT SELECT (Host, Db, User, Table_name, Table_priv, Column_priv)
 ON mysql.tables_priv TO 'pma'@'localhost';
 GRANT SELECT, INSERT, UPDATE, DELETE ON phpmyadmin.* TO 'pma'@'localhost';

Beachten Sie bitte die fett markierten Stellen im obigen SQL Statement: Diese entsprechen dem Namen (pma) und dem Passwort (pmapass) des Control Users sowie dem Namen der Configuration Storage Datenbank (phpmyadmin).

Konfigurationsdatei config.inc.php anpassen

Sind die Datenbank und der Control User einmal angelegt, dann muss phpMyAdmin noch wissen, wie diese heissen. Dies wird in der Konfigurationsdatei config.inc.php hinterlegt, welche im Wurzelverzeichnis der phpMyAdmin-Installation liegt. Folgende Konfigurationsvariablen müssen angepasst bzw. ergänzt werden:

/* Configuration Storage – Datenbank */
 $cfg['Servers'][$i]['pmadb'] = 'phpmyadmin';

/* Configuration Storage – Tabellen */
 $cfg['Servers'][$i]['bookmarktable'] = 'pma_bookmark';
 $cfg['Servers'][$i]['relation'] = 'pma_relation';
 $cfg['Servers'][$i]['table_info'] = 'pma_table_info';
 $cfg['Servers'][$i]['table_coords'] = 'pma_table_coords';
 $cfg['Servers'][$i]['pdf_pages'] = 'pma_pdf_pages';
 $cfg['Servers'][$i]['column_info'] = 'pma_column_info';
 $cfg['Servers'][$i]['history'] = 'pma_history';
 $cfg['Servers'][$i]['tracking'] = 'pma_tracking';
 $cfg['Servers'][$i]['designer_coords'] = 'pma_designer_coords';
 $cfg['Servers'][$i]['userconfig'] = 'pma_userconfig';
 $cfg['Servers'][$i]['recent'] = 'pma_recent';

/* Control User */
 $cfg['Servers'][$i]['controluser']   = 'pma';
 $cfg['Servers'][$i]['controlpass']   = 'pmapass';

Starten Sie zum Schluss den Datenbank- und Webserver Server neu, damit phpMyAdmin die Konfigurationsdatei frisch einliest. Danach sollten die oben beschriebenen Funktion sofort zur Verfügung stehen.

2 Gedanken zu „phpMyAdmin: Zusatzfunktionen aktivieren mit dem Configuration Storage“

  1. Hi, es scheint als hättest du einen kleinen Fehler gemacht, du solltest “‚pmapass‚;” durch “‘pmapass’;” ersetzen.

    Dann funktioniert es auch 🙂

    LG

  2. So wie das jetzt in Deinem Kommentar steht stimmt es natürlich auch nicht, aber es zeigt sehr schön, wo das Problem liegt: WordPress ersetzt Apostrophe durch typografische Anführungszeichen, sofern man Programmcode nicht speziell als solchen kennzeichnet.

    Im Artikel sollte es nun richtig dargestellt werden: Strings werden vorne und hinten mit einem einfachen Apostroph umschlossen.

    Danke für den Hinweis!

Hinterlassen Sie einen Kommentar