Wie konfiguriere ich phpMyAdmin für den Zugriff auf mehrere Server?

13

Was ist die Ubuntu-Methode, um phpMyAdmin so zu konfigurieren, dass ich damit mehrere MySQL-Server verwalten kann? Die Datenbankparameter sind eingestellt /etc/dbconfig-common/phpmyadmin.conf, aber es ist nur Platz für die Verbindungsparameter für einen einzelnen Server vorhanden. Ich könnte es in /etc/phpmyadmin/config-db.phpund hacken /etc/phpmyadmin/config.inc.php, aber ich gehe davon aus, dass es einen eleganteren Weg geben muss.

Mike Scott
quelle
Haben Sie jemals eine Lösung dafür gefunden? Haben Sie sich in eine der Dateien gehackt, die Sie erwähnt haben, oder nicht?
Nanne

Antworten:

8

Ziemlich alte Frage, aber immer noch relevant für Suchanfragen.

phpMyAdmin verwendet einfaches PHP für Konfigurationsdateien und das $cfg['Servers'] Array, um die konfigurierten Server abzurufen.

Der richtige Weg ist also, /etc/phpmyadmin/conf.dfür jeden Server, den Sie hinzufügen möchten, eine neue Konfigurationsdatei hinzuzufügen. Es ist nur erforderlich, den Dateinamen in zu beenden .php, um sie einzuschließen, aber es ist eine gute Idee, your_new_server.inc.phpum die Konsistenz zu gewährleisten.

Der minimale Inhalt für eine gegebene Konfigurationsdatei wäre:

$cfg['Servers'][2]['host']     = 'THE_HOST';
$cfg['Servers'][2]['user']     = 'THE_USER';
$cfg['Servers'][2]['password'] = 'THE_PASSWORD';

Wie in einer anderen Antwort angegeben, können Sie /usr/share/doc/phpmyadmin/examples/config.manyhosts.inc.phpnach weiteren Parametern suchen.

Wichtig: Sie müssen den Index (2) des Arrays für jede neue Datei erhöhen und die Verwendung von 1 vermeiden, wenn Sie weiterhin eine Verbindung zu localhost herstellen möchten.

Wenn die Leute, die mit phpMyAdmin arbeiten, darüber nachgedacht hätten, hätten sie die inkrementierende $iVariable in foreach hinzufügen können , die die Dateien aus dem conf.dVerzeichnis enthält, sodass Sie sie einfach als Index verwenden und sich keine Sorgen machen könnten erhöhen Sie es manuell, aber leider ist es nicht der Fall. Sie können es aber selbst tun.

Marc
quelle
Ich habe versucht, den in /etc/phpmyadmin/conf.d/slaveA.conf.php aufgelisteten minimalen Inhalt zu platzieren, und habe ihn einfach oben auf der PHPMyAdmin-Seite gesehen. Als ich den gleichen Inhalt in das Ende von config.inc.php geschrieben habe, hat es funktioniert. Etwas an diesem Thema scheint es zu vermasseln. Andernfalls scheint dies der erwartete Weg zu sein, um eine benutzerdefinierte Konfiguration zu erstellen, die bei Updates nicht abbricht.
Flickerfly
1
@flickerfly, späte Antwort, aber der Code in den Konfigurationsdateien muss <?phpwie jedes andere PHP-Skript damit beginnen.
Marc
4

Ich denke, das ist der genaueste Weg:

Richten Sie zuerst das Passwort ein:

sudo htpasswd -c /etc/phpmyadmin/htpasswd.setup admin

Deaktivieren Sie dann die Sicherheit:

sudo pma-configure

Gehen Sie dann zu http: // yourserver / phpmyadmin / setup (hier fragen die Browser nach auth, der Benutzer ist admin und das Passwort ist das, was Sie im ersten Befehl eingeben) Sicherheit wieder:

sudo pma-secure
diegueus9
quelle
Die von dieser Methode generierte Konfigurationsdatei wird in /var/lib/phpmyadmin/config.inc.php gespeichert.
Michael Lawton
Diese von dieser Methode generierte Konfigurationsdatei ist dann in der Hauptkonfigurationsdatei unter /etc/phpmyadmin/config.inc.php enthalten. Das phpMyAdmin-Setup-Skript ist unter Ubuntu fehlerhaft und lädt die vorhandene Konfiguration nicht (sodass Sie bei jeder Konfiguration von vorne beginnen müssen). Die Konfiguration, die sie generiert, enthält auch Dinge wie das Blowfish-Geheimnis, das dann von der Hauptkonfigurationsdatei überschrieben wird. Sie werden feststellen, dass der erste Server (1) von der Hauptkonfigurationsdatei überschrieben wird, die die Serverwerte aus config-db.php verwendet.
Michael Lawton
2

Ich habe folgendes angenommen:

  • /etc/phpmyadmin/ wäre der logischste Ort, um die Konfiguration hinzuzufügen
  • /etc/phpmyadmin/config-db.phpist der Speicherort für die Standardkonfiguration (lokal?). Dies ist eine einzige Datenbank, da dies eine Standardeinstellung ist
  • /etc/phpmyadmin/config.inc.phpLiest die Standarddatenbank, damit sie eine hat. Zumindest dieses wird verwendet, so dass Sie eine Datenbank haben. Wenn sich etwas in Ihrer Konfiguration ändert, wird das config-db.phpgeändert, so dass "lokale" Änderungen an Ihrer Datei nicht geändert werden

Daher kam ich zu dem Schluss, dass ein zusätzlicher Server unterhalb dieses Teils hinzugefügt wurde:

/* Configure according to dbconfig-common if enabled */
if (!empty($dbname)) {
    //reading from config-db.php
}

//$i++ was allready done in if above
//Adding extra servers
 $cfg['Servers'][$i]['host'] = 'serverhost.host.tld';
 $cfg['Servers'][$i]['extension'] = 'mysqli';
//...etc

Dies sieht aus wie der beste Ort.

Nanne
quelle
1

Gemäß der phpMyAdmin- Dokumentation können Sie mehrere Server in dem $cfg['Servers']in der config.inc.phpDatei definierten Array definieren .

Carsten Thiel
quelle
2
In einer generischen phpMyAdmin-Installation ja. Aber Ubuntu hat seine eigenen Konfigurationsdateien, um diesen Teil der Datei config.inc.php zu generieren, und ich möchte wissen, wie Ubuntu es konfiguriert, ohne die Ubuntu-Konfiguration überschreiben zu müssen.
Mike Scott
Aha. Die Kommentare in der Datei sagen You can regenerate it using: dpkg-reconfigure -plow phpmyadmin. Ich nehme an, Sie haben das versucht? (Wird jetzt nicht auf dem Produktionssystem ausgeführt.) Ansonsten sollten manuell geänderte Dateien beim Aktualisieren aufgefordert werden, bevor sie überschrieben werden.
Carsten Thiel
2
Ja, ich kann die Datei config-db.php neu generieren, aber in der Konfigurationsdatei, aus der die Datenbankverbindungsparameter (/etc/dbconfig-common/phpmyadmin.conf) stammen, kann nur ein Datenbankserver konfiguriert werden. Ich möchte wissen, wie man mehr als einen Datenbankserver konfiguriert.
Mike Scott
+ Mike Scott, ich konnte $ cfg ['Servers'] nicht dazu bringen, in einer conf.d / -Datei zu arbeiten, aber als ich es in config.inc.php ablegte, funktionierte es einwandfrei. Ich denke, es gibt einen Fehler, der durch die include-Anweisung verursacht wird.
Flickerfly
1

Die Hauptkonfigurationsdatei ist in gespeichert /etc/phpmyadmin/config.inc.php. Diese Datei enthält die

  • Blowfish Geheimnis aus /var/lib/phpmyadmin/blowfish_secret.inc.php
  • Generierte Konfiguration aus dem phpMyAdmin-Setup-Skript (diegueus9-Methode) /var/lib/phpmyadmin/config.inc.php
  • DB-Werte, aus /etc/phpmyadmin/config-db.phpdenen von generiert /etc/dbconfig-common/phpmyadmin.confwerden /usr/sbin/dbconfig-generate-include. /etc/dbconfig-common/phpmyadmin.confkann mit geändert werdendpkg-reconfigure -plow phpmyadmin
  • Zusätzliche Konfigurationsdateien von /etc/phpmyadmin/conf.d/*.php

Einige Beispielkonfigurationsschnipsel sind in /usr/share/doc/phpmyadmin/examplesinclude enthalten config.manyhosts.inc.php. Diese Datei kann hinzugefügt werden /etc/phpmyadmin/conf.d. Die iVariable wird vor dem Erstellen von Hosts auf 1 zurückgesetzt, sodass der eingestellte Host überschrieben wird /etc/phpmyadmin/config.inc.php.

Wenn Sie eine erweiterte Konfiguration vornehmen möchten, möchten Sie /etc/phpmyadmin/config.inc.phpmöglicherweise die Datei ändern und andere Konfigurationserweiterungen hinzufügen /etc/phpmyadmin/conf.d.

Um älteren Konfigurationsdateien Unterstützung für zusätzliche Konfigurationen hinzuzufügen, können Sie das Verzeichnis erstellen /etc/phpmyadmin/conf.dund den folgenden PHP-Code am Ende von /etc/phpmyadmin/config.inc.php:

/* Support additional configurations */
foreach (glob('/etc/phpmyadmin/conf.d/*.php') as $filename) {
        include($filename);
}
Michael Lawton
quelle
0

In diesem Tutorial wird erklärt, wie Sie mehrere MySQL-Server von einer phpMyAdmin-Installation aus verwalten können. Aus Sicherheitsgründen wird für die Kommunikation zwischen phpMyAdmin und einem beliebigen entfernten MySQL-Server eine SSL-Verschlüsselung verwendet


quelle
3
Das sagt mir nicht, wie ich es mit Ubuntu konfigurieren soll, daher beantwortet es die Frage überhaupt nicht.
Mike Scott