Datenbankverwaltung · 5 min read · Jan 29, 2026

Verwalten mehrerer MySQL-Server von einer phpMyAdmin-Installation aus (unter Verwendung von SSL-Verschlüsselung) - Seite 2

3 Konfigurieren von phpMyAdmin

local.example.com:

Bevor wir mit der Konfiguration von phpMyAdmin fortfahren, überprüfen wir zunächst, ob wir wirklich von local.example.com zum MySQL-Server auf remote.example.com (über eine SSL-Verbindung) verbinden können:

mysql --ssl-ca=/etc/mysql/newcerts/ca-cert.pem --ssl-cert=/etc/mysql/newcerts/client-cert.pem --ssl-key=/etc/mysql/newcerts/client-key.pem -h remote.example.com -u root -p

Sie werden nach dem Passwort gefragt, und wenn alles gut geht, erhalten Sie Zugriff:

root@local:/etc/mysql/newcerts# mysql –ssl-ca=/etc/mysql/newcerts/ca-cert.pem –ssl-cert=/etc/mysql/newcerts/client-cert.pem –ssl-key=/etc/mysql/newcerts/client-key.pem -h remote.example.com -u root -p
Passwort eingeben:
Willkommen beim MySQL-Monitor. Befehle enden mit ; oder \g.
Ihre MySQL-Verbindungs-ID ist 101
Serverversion: 5.5.24-8-log (Debian)

Copyright (c) 2000, 2011, Oracle und/oder dessen Tochtergesellschaften. Alle Rechte vorbehalten.

Oracle ist ein eingetragenes Warenzeichen von Oracle Corporation und/oder deren
Tochtergesellschaften. Andere Namen können Warenzeichen ihrer jeweiligen
Eigentümer sein.

Geben Sie 'help;' oder '\h' für Hilfe ein. Geben Sie '\c' ein, um die aktuelle Eingabeanweisung zu löschen.
mysql>

Geben Sie

quit;

ein, um die MySQL-Shell zu verlassen.

Jetzt kommen wir zu dem Teil, in dem wir phpMyAdmin konfigurieren - ich gehe davon aus, dass Sie phpMyAdmin bereits verwenden können, um sich mit dem lokalen MySQL-Server zu verbinden, und jetzt möchten wir es so konfigurieren, dass wir uns auch mit remote.example.com über SSL verbinden können (auf dem phpMyAdmin-Anmeldebildschirm wird es ein Dropdown-Menü geben, aus dem Sie den Server auswählen können, mit dem Sie sich verbinden möchten).

Bevor phpMyAdmin SSL verwenden kann, um mit dem Remote-MySQL-Server zu kommunizieren, müssen wir seine Quellen ein wenig ändern - öffnen Sie mysqli.dbi.lib.php (unter Debian und Ubuntu ist es /usr/share/phpmyadmin/libraries/dbi/mysqli.dbi.lib.php, wenn Sie phpMyAdmin über apt installiert haben):

vi /usr/share/phpmyadmin/libraries/dbi/mysqli.dbi.lib.php

Suchen Sie den folgenden Abschnitt…

| | [...] /* Optional SSL aktivieren */ if ($GLOBALS['cfg']['Server']['ssl'] && defined('MYSQLI_CLIENT_SSL')) { $client_flags |= MYSQLI_CLIENT_SSL; } [...] | |

… und ändern Sie ihn wie folgt:

| | [...] /* Optional SSL aktivieren */ if ($GLOBALS['cfg']['Server']['ssl'] && defined('MYSQLI_CLIENT_SSL')) { mysqli_ssl_set($link, $GLOBALS['cfg']['Server']['key'], $GLOBALS['cfg']['Server']['cert'], $GLOBALS['cfg']['Server']['ca'], $GLOBALS['cfg']['Server']['capath'], $GLOBALS['cfg']['Server']['cipher']); $client_flags |= MYSQLI_CLIENT_SSL; } [...] | |

Öffnen Sie als Nächstes config.inc.php - wenn Sie unter Debian/Ubuntu sind und phpMyAdmin über apt installiert haben, ist es /etc/phpmyadmin/config.inc.php:

vi /etc/phpmyadmin/config.inc.php 

Suchen Sie den folgenden Abschnitt:

| | [...] /* Konfigurieren Sie gemäß dbconfig-common, wenn aktiviert */ if (!empty($dbname)) { /* Authentifizierungstyp */ $cfg['Servers'][$i]['auth_type'] = 'cookie'; /* Serverparameter */ if (empty($dbserver)) $dbserver = 'localhost'; $cfg['Servers'][$i]['host'] = $dbserver; if (!empty($dbport) || $dbserver != 'localhost') { $cfg['Servers'][$i]['connect_type'] = 'tcp'; $cfg['Servers'][$i]['port'] = $dbport; } //$cfg['Servers'][$i]['compress'] = false; /* Wählen Sie mysqli, wenn Ihr Server es hat */ $cfg['Servers'][$i]['extension'] = 'mysqli'; /* Optional: Benutzer für erweiterte Funktionen */ $cfg['Servers'][$i]['controluser'] = $dbuser; $cfg['Servers'][$i]['controlpass'] = $dbpass; /* Optional: Erweiterte phpMyAdmin-Funktionen */ $cfg['Servers'][$i]['pmadb'] = $dbname; $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]['designer_coords'] = 'pma_designer_coords'; $cfg['Servers'][$i]['tracking'] = 'pma_tracking'; $cfg['Servers'][$i]['userconfig'] = 'pma_userconfig'; /* Kommentieren Sie das Folgende aus, um das Anmelden bei passwortlosen Konten zu ermöglichen, * nachdem Sie die damit verbundenen Sicherheitsrisiken zur Kenntnis genommen haben. */ // $cfg['Servers'][$i]['AllowNoPassword'] = TRUE; /* Zum nächsten Server für den Rest der Konfiguration wechseln */ $i++; } [...] | |

Fügen Sie den folgenden Abschnitt darunter für localhost (= local.example.com) hinzu:

| | [...] /* localhost.example.com */ /* Authentifizierungstyp */ $cfg['Servers'][$i]['auth_type'] = 'cookie'; /* Serverparameter */ $cfg['Servers'][$i]['host'] = 'localhost'; $cfg['Servers'][$i]['connect_type'] = 'tcp'; $cfg['Servers'][$i]['compress'] = false; /* Wählen Sie mysqli, wenn Ihr Server es hat */ $cfg['Servers'][$i]['extension'] = 'mysqli'; $cfg['Servers'][$i]['hide_db'] = '(information_schema|performance_schema|test)'; $i++; [...] | |

(In der Zeile $cfg[‘Servers’][$i][‘hide_db’] können Sie alle Datenbanken angeben, die Sie nicht in phpMyAdmin anzeigen möchten - wie information_schema, performance_schema und test.)

Und für remote.example.com fügen Sie den folgenden Abschnitt hinzu:

| | [...] /* remote.example.com */ /* Authentifizierungstyp */ $cfg['Servers'][$i]['auth_type'] = 'cookie'; /* Serverparameter */ $cfg['Servers'][$i]['host'] = 'remote.example.com'; $cfg['Servers'][$i]['connect_type'] = 'tcp'; $cfg['Servers'][$i]['compress'] = false; $cfg['Servers'][$i]['ssl'] = true; $cfg['Servers'][$i]['key'] = '/etc/mysql/newcerts/client-key.pem'; $cfg['Servers'][$i]['cert'] = '/etc/mysql/newcerts/client-cert.pem'; $cfg['Servers'][$i]['ca'] = '/etc/mysql/newcerts/ca-cert.pem'; $cfg['Servers'][$i]['capath'] = NULL; $cfg['Servers'][$i]['cipher'] = NULL; /* Wählen Sie mysqli, wenn Ihr Server es hat */ $cfg['Servers'][$i]['extension'] = 'mysqli'; $cfg['Servers'][$i]['hide_db'] = '(information_schema|performance_schema|test)'; $i++; [...] | |

Stellen Sie sicher, dass Sie mysqli in $cfg[‘Servers’][$i][‘extension’] verwenden, setzen Sie $cfg[‘Servers’][$i][‘ssl’] auf true und geben Sie die SSL-Dateien wie gezeigt an. Mein vollständiger Serverabschnitt sieht wie folgt aus:

| | [...] /* Konfigurieren Sie gemäß dbconfig-common, wenn aktiviert */ if (!empty($dbname)) { /* Authentifizierungstyp */ $cfg['Servers'][$i]['auth_type'] = 'cookie'; /* Serverparameter */ if (empty($dbserver)) $dbserver = 'localhost'; $cfg['Servers'][$i]['host'] = $dbserver; if (!empty($dbport) || $dbserver != 'localhost') { $cfg['Servers'][$i]['connect_type'] = 'tcp'; $cfg['Servers'][$i]['port'] = $dbport; } //$cfg['Servers'][$i]['compress'] = false; /* Wählen Sie mysqli, wenn Ihr Server es hat */ $cfg['Servers'][$i]['extension'] = 'mysqli'; /* Optional: Benutzer für erweiterte Funktionen */ $cfg['Servers'][$i]['controluser'] = $dbuser; $cfg['Servers'][$i]['controlpass'] = $dbpass; /* Optional: Erweiterte phpMyAdmin-Funktionen */ $cfg['Servers'][$i]['pmadb'] = $dbname; $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]['designer_coords'] = 'pma_designer_coords'; $cfg['Servers'][$i]['tracking'] = 'pma_tracking'; $cfg['Servers'][$i]['userconfig'] = 'pma_userconfig'; /* Kommentieren Sie das Folgende aus, um das Anmelden bei passwortlosen Konten zu ermöglichen, * nachdem Sie die damit verbundenen Sicherheitsrisiken zur Kenntnis genommen haben. */ // $cfg['Servers'][$i]['AllowNoPassword'] = TRUE; /* Zum nächsten Server für den Rest der Konfiguration wechseln */ $i++; } /* localhost.example.com */ /* Authentifizierungstyp */ $cfg['Servers'][$i]['auth_type'] = 'cookie'; /* Serverparameter */ $cfg['Servers'][$i]['host'] = 'localhost'; $cfg['Servers'][$i]['connect_type'] = 'tcp'; $cfg['Servers'][$i]['compress'] = false; /* Wählen Sie mysqli, wenn Ihr Server es hat */ $cfg['Servers'][$i]['extension'] = 'mysqli'; $cfg['Servers'][$i]['hide_db'] = '(information_schema|performance_schema|test)'; $i++; /* remote.example.com */ /* Authentifizierungstyp */ $cfg['Servers'][$i]['auth_type'] = 'cookie'; /* Serverparameter */ $cfg['Servers'][$i]['host'] = 'remote.example.com'; $cfg['Servers'][$i]['connect_type'] = 'tcp'; $cfg['Servers'][$i]['compress'] = false; $cfg['Servers'][$i]['ssl'] = true; $cfg['Servers'][$i]['key'] = '/etc/mysql/newcerts/client-key.pem'; $cfg['Servers'][$i]['cert'] = '/etc/mysql/newcerts/client-cert.pem'; $cfg['Servers'][$i]['ca'] = '/etc/mysql/newcerts/ca-cert.pem'; $cfg['Servers'][$i]['capath'] = NULL; $cfg['Servers'][$i]['cipher'] = NULL; /* Wählen Sie mysqli, wenn Ihr Server es hat */ $cfg['Servers'][$i]['extension'] = 'mysqli'; $cfg['Servers'][$i]['hide_db'] = '(information_schema|performance_schema|test)'; $i++; /* Ende der Serverkonfiguration */ [...] | |

Das war’s - auf dem phpMyAdmin-Anmeldebildschirm sollte jetzt ein Dropdown-Menü vorhanden sein, aus dem Sie den MySQL-Server auswählen können, mit dem Sie sich verbinden möchten (localhost oder remote.example.com), und wenn Sie einen Remote-MySQL-Server (wie remote.example.com) auswählen, wird phpMyAdmin über eine SSL-Verbindung damit verbunden.

4 Links

Über den Autor

Falko Timme ist der Eigentümer von Timme Hosting (ultra-schnelles nginx-Webhosting). Er ist der Hauptbetreuer von HowtoForge (seit 2005) und einer der Hauptentwickler von ISPConfig (seit 2000). Er hat auch zum O’Reilly-Buch “Linux System Administration” beigetragen.

Share: X/Twitter LinkedIn

Erhalte neue Beiträge in deinem Posteingang.

Kein Spam. Jederzeit abmelden.