Installation

phpMyAdmin wendet keine speziellen Methoden zur Sicherung des MySQL Datenbankservers an. Es ist immer noch Aufgabe des Administrators, die richtigen Berechtigungen für die MySQL-Datenbanken zu setzen. Die Seite Benutzer in phpMyAdmin kann dafür benutzt werden.

Warnung

Als Mac-Nutzer beachten Sie bitte, dass bei Verwendung einer Version vor Mac OS X StuffIt im Mac-Format entpackt. Sie müssen somit ALLE phpMyAdmin-Skripte zum Beispiel mit BBEdit im Unix-Stil neu speichern, bevor Sie sie auf Ihren Server hochladen, denn PHP mag scheinbar keine Zeilenumbrüche im Mac-Stil („\r“).

Linux-Distributionen

phpMyAdmin ist in den meisten Linux-Distributionen enthalten. Verwenden Sie möglichst Distributions-Pakete – sie stellen gewöhnlich Integration in Ihre Distribution bereit, und Sie erhalten Sicherheits-Updates automatisch von Ihrer Distribution.

Debian

Die Paket-Repositories von Debian enthalten ein phpMyAdmin-Paket, beachten Sie jedoch, dass die Konfigurations-Datei in /etc/phpmyadmin verwaltet wird und sich in mancherlei Hinsicht von der offiziellen phpMyAdmin-Dokumentation unterscheiden kann. Es tut:

Siehe auch

Weitere Informationen können in README.Debian gefunden werden (wird mit dem Paket als /usr/share/doc/phmyadmin/README.Debian installiert).

OpenSUSE

OpenSUSE kommt bereits ab Werk mit einem phpMyAdmin-Paket, installieren Sie Pakete einfach vom openSUSE Build Service.

Ubuntu

Ubuntu liefert ein phpMyAdmin-Paket, falls Sie Wert auf eine aktuelle Version legen, können Sie auch die Pakete von phpMyAdmin PPA verwenden.

Siehe auch

Die Pakete sind die selben wie in Debian Bitte schlagen Sie für weitere Einzelheiten dort in der Dokumentation nach.

Gentoo

Gentoo liefert das phpMyAdmin-Paket, sowohl in einer grundlegenden Konfiguration als auch mit einer webapp-config-Konfiguration. Verwenden Sie emerge dev-db/phpmyadmin zum Installieren.

Mandriva

Mandriva liefert das phpMyAdmin-Paket im contrib-Zweig, es kann über das normale Kontrollzentrum installiert werden.

Fedora

Fedora liefert das phpMyAdmin-Paket, beachten Sie jedoch, dass die Konfigurations-Datei in /etc/phpMyAdmin/ verwaltet wird und sich in mancherlei Hinsicht von der offiziellen phpMyAdmin-Dokumentation unterscheiden kann.

Red Hat Enterprise Linux

Red Hat Enterprise Linux und ihre Derivate wie CentOS liefern phpMyAdmin nicht, doch das Fedora-betriebene Repository Extra Packages for Enterprise Linux (EPEL) enthält phpMyAdmin, falls es aktiviert ist. Beachten Sie jedoch, dass die Konfigurations-Datei in /etc/phpMyAdmin/ verwaltet wird und sich in mancherlei Hinsicht von der offiziellen phpMyAdmin-Konfiguration unterscheiden kann.

Installation auf Windows

Der einfachste Weg, phpMyAdmin in Windows zu installieren, besteht darin, Drittanbieter-Produkte zu verwenden, die phpMyAdmin zusammen mit einer Datenbank und einem Webserver enthalten, wie etwa XAMPP.

Weitere derartige Optionen finden Sie in der Wikipedia.

Installation aus Git heraus

Sie können den aktuellen phpMyAdmin-Quelltext von https://github.com/phpmyadmin/phpmyadmin.git klonen:

git clone https://github.com/phpmyadmin/phpmyadmin.git

Zusätzlich müssen Sie Abhängigkeiten mit Composer installieren:

composer update

Falls Sie nicht beabsichtigen Quelltext beizutragen, können Sie die Installation der Entwicklerwerkzeuge durch folgenden Aufruf überspringen:

composer update --no-dev

Installation mit Composer

Sie können phpMyAdmin mit Composer installieren, seit 4.7.0 werden die Releases automatisch auf das Standard-Repository Packagist gespiegelt.

Bemerkung

Der Inhalt des Composer-Repositorys wird automatisch getrennt von den Releases erzeugt, so dass der Inhalt nicht 100%-ig gleich sein muss wie beim Download des Tarballs. Es sollte jedoch keine funktionalen Unterschiede geben.

Um phpMyAdmin zu installieren, starten Sie einfach:

composer create-project phpmyadmin/phpmyadmin

Alternativ können Sie auch unser eigenes Composer-Repository verwenden, das die Release Tarballs enthält und unter <https://www.phpmyadmin.net/packages.json> verfügbar ist:

composer create-project phpmyadmin/phpmyadmin --repository-url=https://www.phpmyadmin.net/packages.json --no-dev

Installation mit Docker

phpMyAdmin bringt ein Docker image mit, das Sie leicht einrichten können. Sie können es wie folgt herunterladen:

docker pull phpmyadmin/phpmyadmin

Der phpMyAdmin-Server lauscht auf Port 80. Er unterstützt mehrere Möglichkeiten, die Verbindung zum Datenbankserver zu konfigurieren, entweder über die Link-Funktion von Docker, indem Sie Ihren Datenbank-Container mit db für phpMyAdmin verbinden (indem Sie --link ihr_db_host:db angeben) oder über Umgebungsvariablen (in diesem Fall liegt es an Ihnen, das Netzwerk in Docker einzurichten, damit der phpMyAdmin-Container über das Netzwerk auf den Datenbank-Container zugreifen kann).

Umgebungsvariablen mit Docker

Sie können verschiedene Funktionen von phpMyAdmin durch Umgebungsvariablen konfigurieren:

PMA_ARBITRARY

Damit können Sie den Hostnamen des Datenbankservers im Anmeldeformular eingeben.

PMA_HOST

Hostname oder IP-Adresse des zu nutzenden Datenbankservers.

PMA_HOSTS

Kommagetrennte Hostnamen oder IP-Adressen der zu nutzenden Datenbankserver.

Bemerkung

Wird nur benutzt, wenn PMA_HOST leer ist.

PMA_VERBOSE

Ausführlicher Name des Datenbankservers.

PMA_VERBOSES

Kommagetrennte, ausführliche Namen der Datenbankserver.

Bemerkung

Wird nur benutzt, wenn PMA_VERBOSE leer ist.

PMA_USER

Benutzername, der für Config-Authentifizierungsmethode verwendet werden soll.

PMA_PASSWORD

Kennwort, das für Config-Authentifizierungsmethode verwendet werden soll.

PMA_PORT

Port des Datenbankservers, der verwendet werden soll.

PMA_PORTS

Kommagetrennte Hostnamen oder IP-Adressen der zu nutzenden Datenbankserver.

Bemerkung

Wird nur benutzt wenn PMA_HOST leer ist.

PMA_ABSOLUTE_URI

Der vollständige Pfad (https://pma.example.net/) unter dem der Umkehrproxy phpMyAdmin erreichbar macht.

Standardmäßig wird Cookie-Authentifizierungsmethode verwendet, sind aber PMA_USER und PMA_PASSWORD gesetzt, wird auf Config-Authentifizierungsmethode umgeschaltet.

Bemerkung

Die Zugangsdaten, die Sie für die Anmeldung brauchen, sind auf dem MySQL Server gespeichert, bei Docker-Abbildern gibt es verschiedene Möglichkeiten, diese festzulegen (zum Beispiel MYSQL_ROOT_PASSWORT beim Starten des MySQL Containers). Bitte lesen Sie die Dokumentation für MariaDB container oder MySQL container.

Konfiguration anpassen

Zusätzlich kann die Konfiguration über /etc/phpmyadmin/config.user.inc.php angepasst werden. Wenn diese Datei existiert, wird sie geladen, nachdem die Konfiguration aus obigen Umgebungsvariablen erzeugt wurde, so dass Sie sich über jede Konfigurationsvariable hinwegsetzen können. Diese Konfiguration kann als Volume hinzugefügt werden, wenn Docker mit den Parametern -v /ein/lokales/verzeichnis/config.user.inc.php:/etc/phpmyadmin/config.user.inc.php aufgerufen wird.

Beachten Sie, dass die mitgelieferte Konfigurationsdatei nach Umgebungsvariablen mit Docker angewendet wird, aber Sie können jeden der Werte überschreiben.

Um z.B. das Standardverhalten des CSV-Exports zu ändern, können Sie folgende Konfigurationsdatei verwenden:

<?php
$cfg['Export']['csv_columns'] = true;
?>

Sie können damit auch die Serverkonfiguration definieren, anstatt die in Umgebungsvariablen mit Docker aufgeführten Umgebungsvariablen zu verwenden:

<?php
/* Override Servers array */
$cfg['Servers'] = [
    1 => [
        'auth_type' => 'cookie',
        'host' => 'mydb1',
        'port' => 3306,
        'verbose' => 'Verbose name 1',
    ],
    2 => [
        'auth_type' => 'cookie',
        'host' => 'mydb2',
        'port' => 3306,
        'verbose' => 'Verbose name 2',
    ],
];

Siehe auch

Siehe Konfiguration für eine genauere Beschreibung der Einstellungsmöglichkeiten.

Docker-Volumes

Sie können die folgenden Volumes verwenden, um das Verhalten des Images anzupassen:

/etc/phpmyadmin/config.user.inc.php

Kann für weitere Einstellungen verwendet werden, mehr Details dazu im vorherigen Kapitel.

/sessions/

Verzeichnis, in dem PHP-Sitzungen gespeichert sind. Sie können dies zum Beispiel mit Signon-Authentifizierungsmethode teilen.

/www/themes/

Verzeichnis, in dem phpMyAdmin nach Designs sucht. Standardmäßig sind nur diejenigen enthalten, die mit phpMyAdmin ausgeliefert werden, aber Sie können zusätzliche phpMyAdmin-Designs (siehe Benutzerdefinierte Designs) über Docker-Volumes einbinden.

Docker Beispiele

Um phpMyAdmin mit einem bestimmten Server zu verbinden, Folgendes verwenden:

docker run --name myadmin -d -e PMA_HOST=dbhost -p 8080:80 phpmyadmin/phpmyadmin

Um phpMyAdmin mit weiteren Servern zu verbinden, Folgendes verwenden:

docker run --name myadmin -d -e PMA_HOSTS=dbhost1,dbhost2,dbhost3 -p 8080:80 phpmyadmin/phpmyadmin

Um einen beliebigen Server angeben zu können:

docker run --name myadmin -d --link mysql_db_server:db -p 8080:80 -e PMA_ARBITRARY=1 phpmyadmin/phpmyadmin

Sie können den Datenbankcontainer auch mit Docker verbinden:

docker run --name phpmyadmin -d --link mysql_db_server:db -p 8080:80 phpmyadmin/phpmyadmin

Ausführung mit zusätzlichen Einstellungen:

docker run --name phpmyadmin -d --link mysql_db_server:db -p 8080:80 -v /some/local/directory/config.user.inc.php:/etc/phpmyadmin/config.user.inc.php phpmyadmin/phpmyadmin

Ausführung mit zusätzlichen Designs:

docker run --name phpmyadmin -d --link mysql_db_server:db -p 8080:80 -v /custom/phpmyadmin/theme/:/www/themes/theme/ phpmyadmin/phpmyadmin

Mit docker-compose

Alternativ können Sie docker-compose auch mit der docker-compose.yml von <https://github.com/phpmyadmin/docker> verwenden. Dadurch wird phpMyAdmin mit einem beliebigen Server ausgeführt - so können Sie den MySQL/MariaDB-Server auf der Anmeldeseite angeben.

docker-compose up -d

Anpassen der Konfigurationsdatei mit Docker-Compose

Sie können eine externe Datei verwenden, um die phpMyAdmin-Konfiguration anzupassen und sie mit der Volume-Richtlinie zu übergeben:

phpmyadmin:
    image: phpmyadmin/phpmyadmin
    container_name: phpmyadmin
    environment:
     - PMA_ARBITRARY=1
    restart: always
    ports:
     - 8080:80
    volumes:
     - /sessions
     - ~/docker/phpmyadmin/config.user.inc.php:/etc/phpmyadmin/config.user.inc.php
     - /custom/phpmyadmin/theme/:/www/themes/theme/

Hinter haproxy in einem Unterverzeichnis laufen lassen

Wenn Sie phpMyAdmin, das in einem Docker-Container in einem Unterverzeichnis läuft, verfügbar machen wollen, müssen Sie den Request-Pfad im Server-Proxy der Requests neu schreiben.

Zum Beispiel mit haproxy kann es folgendermaßen erreicht werden:

frontend http
    bind *:80
    option forwardfor
    option http-server-close

    ### NETWORK restriction
    acl LOCALNET  src 10.0.0.0/8 192.168.0.0/16 172.16.0.0/12

    # /phpmyadmin
    acl phpmyadmin  path_dir /phpmyadmin
    use_backend phpmyadmin if phpmyadmin LOCALNET

backend phpmyadmin
    mode http

    reqirep  ^(GET|POST|HEAD)\ /phpmyadmin/(.*)     \1\ /\2

    # phpMyAdmin container IP
    server localhost     172.30.21.21:80

Bei der Verwendung von traefik sollte so etwas wie das Folgende funktionieren:

defaultEntryPoints = ["http"]
[entryPoints]
  [entryPoints.http]
  address = ":80"
    [entryPoints.http.redirect]
      regex = "(http:\\/\\/[^\\/]+\\/([^\\?\\.]+)[^\\/])$"
      replacement = "$1/"

[backends]
  [backends.myadmin]
    [backends.myadmin.servers.myadmin]
    url="http://internal.address.to.pma"

[frontends]
   [frontends.myadmin]
   backend = "myadmin"
   passHostHeader = true
     [frontends.myadmin.routes.default]
     rule="PathPrefixStrip:/phpmyadmin/;AddPrefix:/"

Sie sollten dann PMA_ABSOLUTE_URI in der Docker-Compose-Konfiguration angeben:

version: '2'

services:
  phpmyadmin:
    restart: always
    image: phpmyadmin/phpmyadmin
    container_name: phpmyadmin
    hostname: phpmyadmin
    domainname: example.com
    ports:
      - 8000:80
    environment:
      - PMA_HOSTS=172.26.36.7,172.26.36.8,172.26.36.9,172.26.36.10
      - PMA_VERBOSES=production-db1,production-db2,dev-db1,dev-db2
      - PMA_USER=root
      - PMA_PASSWORD=
      - PMA_ABSOLUTE_URI=http://example.com/phpmyadmin/

Schnellinstallation

  1. Wählen Sie eine passende Distributions-Variante von der phpmyadmin.net Downloads-Seite. Manche Varianten enthalten nur die englische Übersetzung, andere enthalten alle Sprachen. Wir nehmen an, dass Sie eine Variante wählen, deren Name ähnlich wie phpMyAdmin-x.x.x -all-languages.tar.gz lautet.
  2. Versichern Sie sich, dass Sie eine unverändertes Archiv heruntergeladen haben. Siehe hierzu Prüfen der phpMyAdmin Releases.
  3. Entpacken Sie die Distribution (stellen Sie sicher, dass Sie auch die Unterverzeichnisse entpacken): tar -xzvf phpMyAdmin_x.x.x-all-languages.tar.gz ins Wurzelverzeichnis Ihres Webservers. Wenn Sie keinen direkten Zugriff auf dieses Verzeichnis haben, entpacken Sie die Dateien in ein Verzeichnis auf Ihrer lokalen Maschine und, nach Schritt 4, verschieben Sie das Verzeichnis auf Ihren Webserver z.B. mit ftp.
  4. Stellen Sie sicher, dass alle Skripte den passenden Eigentümer gesetzt haben (wenn PHP im Safe-Mode läuft, werden Probleme auftreten, wenn manche Skripte verschiedene Eigentümer besitzen). Siehe 4.2 Wie kann man phpMyAdmin vor bösartigem Zugriff schützen? und 1.26 Ich habe gerade phpMyAdmin in mein Dokumentenstamm von IIS installiert, aber ich erhalte die Fehlermeldung „Keine Eingabedatei angegeben“, wenn ich versuche, phpMyAdmin auszuführen. für Empfehlungen.
  5. Jetzt müssen Sie Ihre Installation konfigurieren. Es gibt zwei Methoden, die benutzt werden können. Herkömmlich bearbeiteten Benutzer eine Kopie von config.inc.php per Hand, aber inzwischen wird ein Konfigurationsassistent für jene, die eine grafische Installation bevorzugen, zur Verfügung gestellt. Das Erstellen einer config.inc.php ist dennoch ein schneller Weg um loszulegen und wird für einige erweiterte Einstellungen benötigt.

Datei manuell anlegen

Um die Datei manuell zu erstellen, benutzen Sie einfach Ihren Texteditor, um die Datei config.inc.php im Wurzelverzeichnis der phpMyAdmin Installation (das Verzeichnis, das auch index.php enthält) zu erstellen (Sie konnen die Datei config.sample.inc.php kopieren, um eine minimale Konfigurationsdatei zu erhalten). phpMyAdmin lädt zuerst libraries/config.default.php und überschreibt dann diese Werte mit den in config.inc.php gefundenen Werten. Wenn der Standardwert für eine bestimmte Einstellung in Ordnung ist, so ist es nicht notwendig, diesen in config.inc.php einzutragen. Sie brauchen einige Anweisungen, um loszulegen; eine einfache Konfiguration kann wie folgt aussehen:

<?php
// use here a value of your choice at least 32 chars long
$cfg['blowfish_secret'] = '1{dd0`<Q),5XP_:R9UK%%8\"EEcyH#{o';

$i=0;
$i++;
$cfg['Servers'][$i]['auth_type']     = 'cookie';
// if you insist on "root" having no password:
// $cfg['Servers'][$i]['AllowNoPassword'] = true; `
?>

Oder, wenn Sie bevorzugen, nicht bei jedem Einloggen gefragt zu werden:

<?php

$i=0;
$i++;
$cfg['Servers'][$i]['user']          = 'root';
$cfg['Servers'][$i]['password']      = 'cbb74bc'; // use here your password
$cfg['Servers'][$i]['auth_type']     = 'config';
?>

Warnung

Das Speichern von Passwörtern in der Konfiguration ist unsicher, da dann jeder Ihre Datenbank verändern kann.

Für eine vollständige Erklärung aller möglichen Konfigurationswerten sehen Sie sich den Abschnitt Konfiguration dieses Dokuments an.

Mithilfe des Setup-Skripts

Anstelle config.inc.php manuell zu bearbeiten, können Sie die phpMyAdmin-Setup-Funktion verwenden. Die Datei kann mit dem setup generiert werden und Sie können es zum Hochladen auf dem Server herunterladen.

Öffnen Sie nun Ihren Browser und besuchen Sie den Ort, an dem Sie phpMyAdmin installiert haben, mit dem Suffix /setup. Die Änderungen werden nicht auf dem Server gespeichert, Sie müssen den Knopf Download benutzen, um sie auf Ihrem Computer zu speichern und dann auf den Server hochzuladen.

Jetzt ist die Datei betriebsklar. Sie können die Datei mit Ihrem bevorzugten Texteditor betrachten oder bearbeiten, wenn Sie bevorzugen, einige erweiterte Optionen zu setzen, die der Konfigurationsassistent nicht bereitstellt.

  1. Wenn Sie den auth_type „config“ verwenden, wird empfohlen, dass Sie das phpMyAdmin-Installationsverzeichnis schützen, weil durch die Benutzung von config ein Benutzer nicht dazu aufgefordert wird, ein Kennwort einzugeben, um die phpMyAdmin-Installation aufzurufen. Die Verwendung einer alternativen Authentifizierungsmethode wird empfohlen, zum Beispiel mit HTTP-AUTH in einer .htaccess-Datei oder mit einem Wechsel zu auth_type cookie oder http. Siehe den Abschnitt ISPs, Mehrbenutzer-Installationen für weitere Informationen, insbesondere 4.4 phpMyAdmin gibt bei Verwendung der HTTP-Authentifizierung immer „Zugriff verweigert“..
  2. Öffnen Sie das phpMyAdmin-Hauptverzeichnis in Ihrem Webbrowser. phpMyAdmin sollte jetzt einen Willkommensbildschirm und Ihre Datenbanken anzeigen, oder einen Anmeldungsdialog, wenn Sie die HTTP- oder Cookie-Authentifizierungsmethode verwenden.

Installationsskript für Debian, Ubuntu und deren Derivate

Debian und Ubuntu haben die Art, wie die Installation aktiviert und deaktiviert wird, auf eine Weise geändert, das für jedes von beiden ein einzelner Befehl ausgeführt werden muss.

Um eine die Bearbeitung einer Konfiguration zu gestatten, rufen Sie Folgendes auf:

/usr/sbin/pma-configure

Um die Bearbeitung einer Konfiguration zu verbieten, rufen Sie Folgendes auf:

/usr/sbin/pma-secure

Installationsskript für openSUSE

Einige openSUSE-Veröffentlichungen beinhalten im Paket kein Installationsskript. Falls Sie dafür eine Konfiguration generieren wollen, können Sie entweder das Originalpaket von <https://www.phpmyadmin.net/> herunterladen, oder das Installationsskript unseres Demo-Servers <https://demo.phpmyadmin.net/STABLE/setup/> nutzen.

Prüfen der phpMyAdmin Releases

Seit Juli 2015 sind alle phpMyAdmin-Versionen vom veröffentlichen Entwickler, bis Januar 2016 war das Marc Deslisle, kryptographisch signiert. Seine Schlüssel-ID ist 0xFEFC65D181AF644A, sein PGP-Fingerprint ist:

436F F188 4B1A 0C3F DCBF 0D79 FEFC 65D1 81AF 644A

und Sie können mehr Identifikationsinformationen von <https://keybase.io/lem9> erhalten.

Seit Januar 2016 ist der Veröffentlichungsleiter Isaac Bennetch. Seine Schlüssel-ID ist 0xCE752F178259BD92 und sein PGP-Fingerabdruck ist:

3D06 A59E CE73 0EB7 1B51 1C17 CE75 2F17 8259 BD92

und Sie können mehr Identifikationsinformationen von <https://keybase.io/ibennetch> erhalten.

Einige zusätzliche Downloads (zum Beispiel Themes) können durch Michal Čihař signiert sein. Seine Schlüssel-ID ist 0x9C27B31342B7511D und sein PGP-Fingerprint ist:

63CB 1DF1 EF12 CF2A C0EE 5A32 9C27 B313 42B7 511D

und Sie können mehr Identifikationsinformationen von <https://keybase.io/nijel> erhalten.

Sie sollte verifizieren, dass die Signatur zum Archiv passt, welches Sie heruntergladen haben. Auf diesem Weg können Sie sicherstellen, dass sie den Quellcode nutzen, welcher veröffentlich wurde. Sie sollte auch das Datum der Signatur prüfen, um sicher zu gehen, dass Sie die neuste Version heruntergladen haben.

Jedes Archiv wird von .asc-Dateien begleitet, die die entsprechende PGP-Signatur enthalten. Sobald beide Dateien im gleichen Ordner liegen, lässt sich die Signatur prüfen:

$ gpg --verify phpMyAdmin-4.5.4.1-all-languages.zip.asc
gpg: Signature made Fri 29 Jan 2016 08:59:37 AM EST using RSA key ID 8259BD92
gpg: Can't check signature: public key not found

Wie Sie sehen können, meldet gpg, dass der Public-Key nicht bekannt ist. Jetzt sollten Sie einen der nächsten Schritte befolgen:

$ gpg --import phpmyadmin.keyring
  • Lade dir den Schlüssel von einem der Server runter:
$ gpg --keyserver hkp://pgp.mit.edu --recv-keys 3D06A59ECE730EB71B511C17CE752F178259BD92
gpg: requesting key 8259BD92 from hkp server pgp.mit.edu
gpg: key 8259BD92: public key "Isaac Bennetch <bennetch@gmail.com>" imported
gpg: no ultimately trusted keys found
gpg: Total number processed: 1
gpg:               imported: 1  (RSA: 1)

Damit wird die Situation etwas verbessert – an diesem Punkt können Sie prüfen, dass die Signatur vom angegebenen Schlüssel stimmt. Dem Namen, der im Schlüssel verwendet wird, können Sie aber immer noch nicht vertrauen:

$ gpg --verify phpMyAdmin-4.5.4.1-all-languages.zip.asc
gpg: Signature made Fri 29 Jan 2016 08:59:37 AM EST using RSA key ID 8259BD92
gpg: Good signature from "Isaac Bennetch <bennetch@gmail.com>"
gpg:                 aka "Isaac Bennetch <isaac@bennetch.org>"
gpg: WARNING: This key is not certified with a trusted signature!
gpg:          There is no indication that the signature belongs to the owner.
Primary key fingerprint: 3D06 A59E CE73 0EB7 1B51  1C17 CE75 2F17 8259 BD92

Das Problem liegt hierbei darin, dass jeder den Schlüssel mit diesem Namen ausstellen könnte. Sie müssen sicherstellen, dass der Schlüssel tatsächlich von der erwähnten Person stammt. Das GNU-Datenschutzhandbuch behandelt dieses Thema im Kapitel Andere Schlüssel auf Ihrem öffentlichen Schlüsselbund überprüfen. Die verlässlichste Methode besteht darin, den Entwickler im echten Leben zu treffen und Schlüssel-Fingerabdrücke auszutauschen, oder Sie verlassen sich auf das Web of Trust. Damit können Sie dem Schlüssel mittels Signaturen von anderen vertrauen, die den Entwickler in Echt getroffen haben. Zum Beispiel können Sie sehen, wie Isaacs Schlüssel mit dem Schlüssel von Linus verknüpft ist.

Sobald der Schlüssel akzeptiert wurde, wird die Warnung nicht mehr auftreten:

$ gpg --verify phpMyAdmin-4.5.4.1-all-languages.zip.asc
gpg: Signature made Fri 29 Jan 2016 08:59:37 AM EST using RSA key ID 8259BD92
gpg: Good signature from "Isaac Bennetch <bennetch@gmail.com>" [full]

Sollte die Signatur ungültig sein (das Archiv wurde verändert), werden Sie einen klaren Fehler bekommen, egal ob dem Schlüssel vertraut wird oder nicht:

$ gpg --verify phpMyAdmin-4.5.4.1-all-languages.zip.asc
gpg: Signature made Fri 29 Jan 2016 08:59:37 AM EST using RSA key ID 8259BD92
gpg: BAD signature from "Isaac Bennetch <bennetch@gmail.com>" [unknown]

phpMyAdmin-Konfigurationsspeicher

Geändert in Version 3.4.0: Vor phpMyAdmin 3.4.0 wurde dies Verknüpfte Tabellen-Infrastruktur genannt, aber der Name wurde wegen des erweiterten Geltungsbereichs des Speichers geändert.

Für eine ganze Menge an neuen Funktionen (Lesezeichen, Kommentare, SQL-Verlauf, Tracking-Mechanismus, PDF-Generierung, ref:Transformationen, Relationen) müssen Sie einige spezielle Tabellen erzeugen. Diese Tabellen können in einer eigenen Datenbank liegen oder in einer zentralen Datenbank für eine Mehrbenutzerinstallation (auf diese Datenbank würde dann der Kontroll-Benutzer zugreifen, also sollte kein anderer Benutzer Rechte dafür besitzen).

Null-Konfiguration

In vielen Fällen kann diese Datenbankstruktur automatisch erzeugt und konfiguriert werden. Dies wird „Zero Configuration“-Modus genannt und kann besonders nützlich in Situationen mit Shared Hosting sein. Der „Zeroconf“-Modus ist standardmäßig aktiviert, um ihn zu deaktiveren, setzen sie $cfg['ZeroConf'] auf „false“.

Die folgenden drei Szenarien werden durch den Zero-Configuration-Modus abgedeckt:

  • Wenn eine Datenbank geöffnet wird, zu der keine Konfigurationsspeichertabellen vorhanden sind, bietet phpMyAdmin im „Operationen“-Tab an, diese zu erstellen.
  • Wenn eine Datenbank geöffnet wird, zu der die Tabellen bereits existieren, erkennt die Software dies automatisch und verwendet diese. Dies ist der häufigste Fall; Nachdem die Tabellen eingangs automatisch erzeugt werden, werden diese kontinuierlich weiterverwendet ohne den Nutzer zu stören; Dies ist auch vor allem in Shared-Hosting-Umgebungen sinnvoll, wo der Benutzer nicht die config.inc.php bearbeiten kann und er nur Zugriff auf eine Datenbank hat.
  • Wenn mehrere Datenbanken verwaltet werden und die Datenbank mit den Konfigurationsspeicher-Tabellen zuerst aufgerufen wird und wird dann zu einer anderen Datenbank gewechselt, benutzt phpMyAdmin weiterhin die Tabellen der ersten Datenbank. Der Benutzer wird nicht aufgefordert, neue Tabellen anzulegen.

Manuelle Konfiguration

Bitte schauen Sie in Ihr Verzeichnis ./sql/, wo Sie eine Datei namens create_tables.sql finden sollten. (Wenn Sie einen Windows-Server verwenden, achten Sie bitte besonders auf 1.23 Ich verwende MySQL auf einer Win32-Maschine. Jedes Mal, wenn ich eine neue Tabelle erstelle, werden die Tabellen- und Spaltennamen in Kleinbuchstaben geändert!).

Wenn Sie diese Infrastruktur bereits hatten und:

  • auf MySQL 4.1.2 oder neuer aktualisiert haben, nutzen Sie bitte sql/upgrade_tables_mysql_4_1_2+.sql.
  • auf phpMyAdmin 4.3.0 oder neuer von 2.5.0 oder neuer aktualisiert haben (<= 4.2.x), nutzen Sie bitte sql/upgrade_column_info_4_3_0+.sql.
  • auf phpMyAdmin 4.7.0 oder neuer von 4.3.0 oder neuer aktualisiert haben, verwenden Sie bitte sql/upgrade_tables_4_7_0+.sql.

und legen Sie dann neue Tabellen an, indem Sie sql/create_tables.sql importieren.

Sie können phpMyAdmin dafür verwenden, die Tabellen für Sie zu erstellen. Bitte beachten Sie, dass sie besondere (Administrator) Berechtigungen benötigen, um Datenbank und Tabellen zu erstellen, und dass das Skript etwas Bearbeitung benötigt, abhängig vom Datenbanknamen.

Nachdem Sie die Datei sql/create_tables.sql importiert haben, sollten Sie die Tabellennamen in Ihrer config.inc.php-Datei festlegen. Die Einstellungen dafür können Sie im Abschnitt Konfiguration nachlesen.

Sie brauchen außerdem einen Kontrollnutzer (Einstellungen $cfg['Servers'][$i]['controluser'] und $cfg['Servers'][$i]['controlpass']) mit den korrekten Rechten für diese Tabellen. Sie können ihn beispielsweise mit folgender Anweisung anlegen:

GRANT SELECT, INSERT, UPDATE, DELETE ON <pma_db>.* TO 'pma'@'localhost'  IDENTIFIED BY 'pmapass';

Aktualisieren von einer älteren Version

Warnung

Extrahieren sie niemals die neue Version über eine bestehende Installation von phpMyAdmin, entfernen Sie immer zuerst die alten Dateien und behalten Sie dabei nur die Konfiguration bei.

Auf diese Art bleibt kein alter, nicht länger funktionierender Code im Verzeichnis, der zu schweren Sicherheitslücken oder Fehlern führen kann.

Kopieren Sie einfach config.inc.php von Ihrer vorherigen Installation in die neu entpackte. Konfigurationsdateien von alten Versionen brauchen eventuell Bearbeitungen, da einige Optionen geändert oder entfernt wurden. Für Kompatibilität zu PHP 5.3 oder neuer, entfernen Sie eine set_magic_quotes_runtime(0); Anweisung, die Sie ziemlich am Ende der Konfigurationsdatei finden könnten.

Sie sollten nicht libraries/config.default.php auf config.inc.php kopieren, weil die Standardkonfiguration versionsspezifisch ist.

Die vollständige Nachrüstung kann in wenigen, einfachen Schritten durchgeführt werden:

  1. Laden Sie die neueste phpMyAdmin-Version von <https://www.phpmyadmin.net/downloads/> herunter.
  2. Benennen Sie den vorhandenen phpMyAdmin-Ordner um (z.B. in phpMyAdmin-alt).
  3. Entpacken Sie das kürzlich heruntergeladene phpMyAdmin in das gewünschte Verzeichnis (z.B. phpMyAdmin).
  4. Kopieren Sie :file:config.inc.php aus dem alten Verzeichnis (phpMyAdmin-alt) in das neue (phpMyAdmin).
  5. Überprüfen Sie, ob alles ordnungsgemäß funktioniert.
  6. Entfernen Sie die Sicherung der vorigen Version (phpMyAdmin-alt).

Wenn Sie Ihren MySQL-Server von einer Version früher als 4.1.2 auf Version 5.x oder neuer aktualisiert haben und Sie den phpMyAdmin-Konfigurationsspeicher nutzen, sollten Sie das SQL-Skript sql/upgrade_tables_mysql_4_1_2+.sql ausführen.

Wenn Sie Ihr phpMyAdmin auf 4.3.0 oder neuer von 2.5.0 oder neuer (<= 4.2.x) aktualisiert haben und wenn Sie den phpMyAdmin-Konfigurationsspeicher nutzen, sollten Sie das SQL-Skript sql/upgrade_column_info_4_3_0+.sql ausführen.

Vergessen Sie nicht, den Browsercache zu löschen und die letzte Sitzung zu leeren, indem Sie sich abmelden und danach wieder anmelden.

Benutzung von Authentifizierungsmethoden

HTTP- und Cookie-Authentifizierung werden in einer Mehrbenutzer-Umgebung empfohlen, wo Sie Benutzern Zugriff auf ihre eigene Datenbank geben wollen, ohne dass sie mit anderen herumspielen können. Beachten Sie jedoch, dass MS Internet Explorer scheinbar sehr fehleranfällig bei Cookies ist, zumindest bis Version 6. Selbst in einer Einbenutzer-Umgebung* bevorzugen Sie möglicherweise den HTTP- oder Cookie-Modus, sodass Ihr Benutzername und das Kennwort nicht im Klartext in der Konfigurationsdatei stehen.

Die HTTP- und Cookie-Authentifizierungsmethoden sind sicherer: Die MySQL-Logindaten müssen nicht in der phpMyAdmin-Konfigurationsdatei gesetzt werden (außer eventuell für den $cfg['Servers'][$i]['controluser']). Behalten Sie aber im Sinn, dass das Kennwort im Klartext übertragen wird, es sei denn, Sie verwenden das HTTPS-Protokoll. Im Cookie-Modus wird das Kennwort AES-verschlüsselt in einem temporären Cookie gespeichert.

Dann sollte jedem der echten Benutzer eine Menge von Berechtigungen für eine Menge von bestimmten Datenbanken vergeben werden. Normalerweise sollten Sie einem normalen Benutzer keine globalen Berechtigungen gewähren, außer Sie verstehen die Bedeutung dieser Berechtigungen (zum Beispiel wenn Sie einen Administratorbenutzer erstellen). Um zum Beispiel dem Benutzer real_user sämtliche Rechte an der Datenbank user_base zu geben:

GRANT ALL PRIVILEGES ON user_base.* TO 'real_user'@localhost IDENTIFIED BY 'real_password';

Was der Benutzer jetzt tun kann, wird vollständig vom MySQL-Benutzerverwaltungssystem kontrolliert. Mit der HTTP- oder Cookie-Authentifizierungsmethode brauchen Sie nicht die Benutzer/Kennwort-Felder im Feld $cfg['Servers'] eintragen.

HTTP-Authentifizierungs-Methode

Bemerkung

Es gibt keine vernünftige Möglichkeit sich in einer HTTP-Authenifizierung abzumelden. Die meisten Browser speichern die Anmeldedaten solange, wie keine andere erfolgreiche Anmeldung durchgeführt wurde. Auf Grund dieser Methode besteht die Beschränkung, dass man sich nicht mit dem selben Benutzer nach einer Abmeldung wieder anmelden kann.

Signon-Authentifizierungsmethode

Das sehr grundlegende Beispiel zum Speichern von Anmeldedaten in einer Sitzung steht als examples/signon.php bereit:

<?php
/* vim: set expandtab sw=4 ts=4 sts=4: */
/**
 * Single signon for phpMyAdmin
 *
 * This is just example how to use session based single signon with
 * phpMyAdmin, it is not intended to be perfect code and look, only
 * shows how you can integrate this functionality in your application.
 *
 * @package    PhpMyAdmin
 * @subpackage Example
 */
declare(strict_types=1);

/* Use cookies for session */
ini_set('session.use_cookies', 'true');
/* Change this to true if using phpMyAdmin over https */
$secure_cookie = false;
/* Need to have cookie visible from parent directory */
session_set_cookie_params(0, '/', '', $secure_cookie, true);
/* Create signon session */
$session_name = 'SignonSession';
session_name($session_name);
// Uncomment and change the following line to match your $cfg['SessionSavePath']
//session_save_path('/foobar');
@session_start();

/* Was data posted? */
if (isset($_POST['user'])) {
    /* Store there credentials */
    $_SESSION['PMA_single_signon_user'] = $_POST['user'];
    $_SESSION['PMA_single_signon_password'] = $_POST['password'];
    $_SESSION['PMA_single_signon_host'] = $_POST['host'];
    $_SESSION['PMA_single_signon_port'] = $_POST['port'];
    /* Update another field of server configuration */
    $_SESSION['PMA_single_signon_cfgupdate'] = ['verbose' => 'Signon test'];
    $id = session_id();
    /* Close that session */
    @session_write_close();
    /* Redirect to phpMyAdmin (should use absolute URL here!) */
    header('Location: ../index.php');
} else {
    /* Show simple form */
    header('Content-Type: text/html; charset=utf-8');
    echo '<?xml version="1.0" encoding="utf-8"?>' , "\n";
    ?>
    <!DOCTYPE HTML>
    <html lang="en" dir="ltr">
    <head>
    <link rel="icon" href="../favicon.ico" type="image/x-icon" />
    <link rel="shortcut icon" href="../favicon.ico" type="image/x-icon" />
    <meta charset="utf-8" />
    <title>phpMyAdmin single signon example</title>
    </head>
    <body>
    <?php
    if (isset($_SESSION['PMA_single_signon_error_message'])) {
        echo '<p class="error">';
        echo $_SESSION['PMA_single_signon_error_message'];
        echo '</p>';
    }
    ?>
    <form action="signon.php" method="post">
    Username: <input type="text" name="user" /><br />
    Password: <input type="password" name="password" /><br />
    Host: (will use the one from config.inc.php by default)
    <input type="text" name="host" /><br />
    Port: (will use the one from config.inc.php by default)
    <input type="text" name="port" /><br />
    <input type="submit" />
    </form>
    </body>
    </html>
    <?php
}
?>

Alternativ können Sie diese Methode auch zur Einbindung von OpenID nutzen, wie in examples/openid.php gezeigt:

<?php
/* vim: set expandtab sw=4 ts=4 sts=4: */
/**
 * Single signon for phpMyAdmin using OpenID
 *
 * This is just example how to use single signon with phpMyAdmin, it is
 * not intended to be perfect code and look, only shows how you can
 * integrate this functionality in your application.
 *
 * It uses OpenID pear package, see https://pear.php.net/package/OpenID
 *
 * User first authenticates using OpenID and based on content of $AUTH_MAP
 * the login information is passed to phpMyAdmin in session data.
 *
 * @package    PhpMyAdmin
 * @subpackage Example
 */
declare(strict_types=1);

if (false === @include_once 'OpenID/RelyingParty.php') {
    exit;
}

/* Change this to true if using phpMyAdmin over https */
$secure_cookie = false;

/**
 * Map of authenticated users to MySQL user/password pairs.
 */
$AUTH_MAP = [
    'https://launchpad.net/~username' => [
        'user' => 'root',
        'password' => '',
        ],
    ];

/**
 * Simple function to show HTML page with given content.
 *
 * @param string $contents Content to include in page
 *
 * @return void
 */
function Show_page($contents)
{
    header('Content-Type: text/html; charset=utf-8');
    echo '<?xml version="1.0" encoding="utf-8"?>' , "\n";
    ?>
    <!DOCTYPE HTML>
    <html lang="en" dir="ltr">
    <head>
    <link rel="icon" href="../favicon.ico" type="image/x-icon" />
    <link rel="shortcut icon" href="../favicon.ico" type="image/x-icon" />
    <meta charset="utf-8" />
    <title>phpMyAdmin OpenID signon example</title>
    </head>
    <body>
    <?php
    if (isset($_SESSION) && isset($_SESSION['PMA_single_signon_error_message'])) {
        echo '<p class="error">' , $_SESSION['PMA_single_signon_message'] , '</p>';
        unset($_SESSION['PMA_single_signon_message']);
    }
    echo $contents;
    ?>
    </body>
    </html>
    <?php
}

/**
 * Display error and exit
 *
 * @param Exception $e Exception object
 *
 * @return void
 */
function Die_error($e)
{
    $contents = "<div class='relyingparty_results'>\n";
    $contents .= "<pre>" . htmlspecialchars($e->getMessage()) . "</pre>\n";
    $contents .= "</div class='relyingparty_results'>";
    Show_page($contents);
    exit;
}


/* Need to have cookie visible from parent directory */
session_set_cookie_params(0, '/', '', $secure_cookie, true);
/* Create signon session */
$session_name = 'SignonSession';
session_name($session_name);
@session_start();

// Determine realm and return_to
$base = 'http';
if (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') {
    $base .= 's';
}
$base .= '://' . $_SERVER['SERVER_NAME'] . ':' . $_SERVER['SERVER_PORT'];

$realm = $base . '/';
$returnTo = $base . dirname($_SERVER['PHP_SELF']);
if ($returnTo[strlen($returnTo) - 1] != '/') {
    $returnTo .= '/';
}
$returnTo .= 'openid.php';

/* Display form */
if (!count($_GET) && !count($_POST) || isset($_GET['phpMyAdmin'])) {
    /* Show simple form */
    $content = '<form action="openid.php" method="post">
OpenID: <input type="text" name="identifier" /><br />
<input type="submit" name="start" />
</form>
</body>
</html>';
    Show_page($content);
    exit;
}

/* Grab identifier */
if (isset($_POST['identifier']) && is_string($_POST['identifier'])) {
    $identifier = $_POST['identifier'];
} elseif (isset($_SESSION['identifier']) && is_string($_SESSION['identifier'])) {
    $identifier = $_SESSION['identifier'];
} else {
    $identifier = null;
}

/* Create OpenID object */
try {
    $o = new OpenID_RelyingParty($returnTo, $realm, $identifier);
} catch (Exception $e) {
    Die_error($e);
}

/* Redirect to OpenID provider */
if (isset($_POST['start'])) {
    try {
        $authRequest = $o->prepare();
    } catch (Exception $e) {
        Die_error($e);
    }

    $url = $authRequest->getAuthorizeURL();

    header("Location: $url");
    exit;
} else {
    /* Grab query string */
    if (!count($_POST)) {
        list(, $queryString) = explode('?', $_SERVER['REQUEST_URI']);
    } else {
        // I hate php sometimes
        $queryString = file_get_contents('php://input');
    }

    /* Check reply */
    try {
        $message = new OpenID_Message($queryString, OpenID_Message::FORMAT_HTTP);
    } catch (Exception $e) {
        Die_error($e);
    }

    $id = $message->get('openid.claimed_id');

    if (!empty($id) && isset($AUTH_MAP[$id])) {
        $_SESSION['PMA_single_signon_user'] = $AUTH_MAP[$id]['user'];
        $_SESSION['PMA_single_signon_password'] = $AUTH_MAP[$id]['password'];
        session_write_close();
        /* Redirect to phpMyAdmin (should use absolute URL here!) */
        header('Location: ../index.php');
    } else {
        Show_page('<p>User not allowed!</p>');
        exit;
    }
}

Wenn Sie planen, die Anmeldedaten auf eine andere Art und Weise zu übergeben, müssen Sie einen Wrapper in PHP schreiben, der diese Daten abholt, und ihn in $cfg['Servers'][$i]['SignonScript'] setzen. Ein sehr minimales Beispiel finden Sie in examples/signon-script.php:

<?php
/* vim: set expandtab sw=4 ts=4 sts=4: */
/**
 * Single signon for phpMyAdmin
 *
 * This is just example how to use script based single signon with
 * phpMyAdmin, it is not intended to be perfect code and look, only
 * shows how you can integrate this functionality in your application.
 *
 * @package    PhpMyAdmin
 * @subpackage Example
 */
declare(strict_types=1);

/**
 * This function returns username and password.
 *
 * It can optionally use configured username as parameter.
 *
 * @param string $user User name
 *
 * @return array
 */
function get_login_credentials($user)
{
    /* Optionally we can use passed username */
    if (!empty($user)) {
        return [$user, 'password'];
    }

    /* Here we would retrieve the credentials */
    $credentials = ['root', ''];

    return $credentials;
}

Config-Authentifizierungsmethode

  • Diese Methode ist die unsicherste, weil dazu zwingend die Felder $cfg['Servers'][$i]['user'] und $cfg['Servers'][$i]['password'] Felder ausgefüllt werden müssen (und deshalb jeder, der Ihre config.inc.php lesen kann, Ihren Benutzernamen und das Kennwort sehen kann).
  • Im Abschnitt ISPs, Mehrbenutzer-Installationen befindet sich ein Eintrag, der erklärt, wie Sie Ihre Konfigurationsdatei absichern können.
  • Für mehr Sicherheit bei Benutzung dieser Methode können Sie sich überlegen, die Einstellungen der Hostauthentifizierung $cfg['Servers'][$i]['AllowDeny']['order'] und $cfg['Servers'][$i]['AllowDeny']['rules'] einzusetzen.
  • Anders als bei Cookie und HTTP wird nicht verlangt, dass sich ein Benutzer anmeldet, wenn die phpMyAdmin-Seite zum ersten Mal geladen wird. Dies ist absichtlich so, könnte aber beliebigen Benutzern Zugriff auf Ihre Installation geben. Die Verwendung irgendeiner Beschränkung wird empfohlen, eventuell reicht eine .htaccess-Datei mit der HTTP-AUTH-Richtlinie oder das Verbot von eingehenden HTTP-Anfragen am eigenen Router oder in der Firewall aus (beide Möglichkeiten sind außerhalb des Rahmens dieses Handbuchs, aber leicht per Google zu finden).

Absichern Ihrer phpMyAdmin-Installation

Das phpMyAdmin-Team arbeitet hart daran, die Anwendung sicher zu machen. Hier einige Wege, wie Sie Ihre Installation besser absichern können:

  • Befolge unsere Sicherheitshinweise und aktualisiere phpMyAdmin immer, wenn eine neue Sicherheitslücke bekannt wird.

  • Gestatten Sie auf phpMyAdmin nur über HTTPS Zugriff. Idealerweise sollten Sie ebenfalls HSTS verwenden, um so vor Attacken auf ältere Protokollversionen geschützt zu sein.

  • Stellen Sie sicher, dass Ihre PHP-Installation mit den Empfehlungen für Produktivseiten konform ist, zum Beispiel sollte display_errors deaktiviert sein.

  • Das test-Verzeichnis von phpMyAdmin entfernen, es sei denn, Sie entwickeln und benötigen eine Testsuite.

  • Das setup-Verzeichnis von phpMyAdmin entfernen, Sie verwenden es wahrscheinlich nach der ersten Einrichtung nicht mehr.

  • Die richtige Authentifizierungs-Methode verwenden – Cookie-Authentifizierungsmethode ist für Shared-Hosting vermutlich die beste Wahl.

  • Verweigern Sie den Zugriff auf Hilfsdateien in ./libraries/ oder ./templates/ Unterordnern in Ihrer Webserver-Konfiguration. Solch eine Konfiguration verhindert mögliche Verzeichnisauflistungs- und Cross-Site-Scripting-Schwachstellen, die in diesem Code gefunden werden könnten. Für den Apache-Webserver wird das oft über eine .htaccess-Datei in diesen Verzeichnissen erledigt.

  • Verweigern Sie den Zugriff auf temporäre Dateien, siehe $cfg['TempDir'] (wenn das innerhalb Ihres Web-Root liegt, siehe auch Webserver-Verzeichnisse hochladen/speichern/importieren).

  • Es ist generell eine gute Idee, öffentliche phpMyAdmin-Installationen gegen Zugriff von Robots abzusichern, weil diese normalerweise nichts Gutes tun können. Sie können durch Verwendung einer robots.txt-Datei im Wurzelverzeichnis Ihres Webservers erreichen oder Zugriff durch die Webserver-Konfiguration beschränken, siehe 1.42 Wie kann ich verhindern, dass robots auf phpMyAdmin zugreifen?.

  • Falls Sie nicht wollen, dass alle MySQL-Benutzer auf phpMyAdmin zugreifen können, verwenden Sie $cfg['Servers'][$i]['AllowDeny']['rules'] zur Begrenzung oder der $cfg['Servers'][$i]['AllowRoot'] um root-Benutzern den Zugriff zu verweigern.

  • Aktivieren Sie „ref:2fa für Ihr Benutzerkonto.

  • Erwägen Sie, phpMyAdmin hinter einem Authentifizierungs-Proxy zu verstecken, sodass Nutzer sich authentifizieren müssen, bevor sie MySQL-Anmeldedaten für phpMyAdmin bereitstellen. Sie können dies erreichen, indem Sie Ihren Webserver so einstellen, dass eine HTTP-Authentifizierung angefordert wird. In Apache lässt sich das beispielsweise wie folgt umsetzen:

    AuthType Basic
    AuthName "Restricted Access"
    AuthUserFile /usr/share/phpmyadmin/passwd
    Require valid-user
    

    Sobald Sie die Konfiguration geändert haben, müssen Sie eine Liste der Benutzer erstellen, die sich authentifizieren dürfen. Das ist mit dem Hilfsprogramm htpasswd möglich:

    htpasswd -c /usr/share/phpmyadmin/passwd username
    
  • Wenn Sie sich Sorgen um automatisierte Angriffe machen, könnte das Einschalten eines Captchas mit $cfg['CaptchaLoginPublicKey'] und $cfg['CaptchaLoginPrivateKey'] eine Option sein.

  • Fehlgeschlagene Anmeldeversuche werden im Syslog protokolliert (falls vorhanden, siehe $cfg['AuthLog']). Dies ermöglicht die Verwendung eines Tools wie fail2ban, um Brute-Force-Versuche zu blockieren. Beachten Sie, dass die von syslog verwendete Protokolldatei nicht die gleiche ist wie die Apache-Fehler- oder Zugriffsprotokolldateien.

  • Falls Sie phpMyAdmin zusammen mit anderen PHP-Anwendungen betreiben, ist es generell ratsam, einen separaten Sitzungsspeicher für phpMyAdmin zu verwenden, um mögliche Sitzungsbasierte Angriffe darauf zu vermeiden. Sie können $cfg['SessionSavePath'] verwenden, um dies zu erreichen.

SSL für die Verbindung zum Datenbankserver verwenden

Es wird empfohlen, bei der Verbindung zum entfernten Datenbankserver SSL zu verwenden. Es gibt verschiedene Konfigurationsoptionen für die SSL-Einrichtung:

$cfg['Servers'][$i]['ssl']
Legt fest, ob überhaupt SSL verwendet werden soll. Wenn Sie nur dies aktivieren, wird die Verbindung verschlüsselt, aber es gibt keine Authentifizierung der Verbindung - Sie können nicht überprüfen, ob Sie mit dem richtigen Server sprechen.
$cfg['Servers'][$i]['ssl_key'] und $cfg['Servers'][$i]['ssl_cert']
Diese wird für die Authentifizierung des Clients gegenüber dem Server verwendet.
$cfg['Servers'][$i]['ssl_ca'] und $cfg['Servers'][$i]['ssl_ca_path']
Die Zertifizierungsstellen, denen Sie für Serverzertifikate vertrauen. Dies wird verwendet, um sicherzustellen, dass Sie mit einem vertrauenswürdigen Server sprechen.
$cfg['Servers'][$i]['ssl_verify']
Diese Konfiguration deaktiviert die Überprüfung des Serverzertifikats. Mit Vorsicht zu verwenden.

Bekannte Probleme

Benutzer mit spaltenspezifischen Rechten können nicht „Durchsuchen“

Hat ein Benutzer nur spaltenspezifische Privilegien für einige (aber nicht alle) Spalten einer Tabelle, schlägt „Anzeigen“ mit einer Fehlermeldung fehl.

Als Prolemumgehung kann eine Lesezeichenabfrage mit dem gleichen Namen wie die Tabelle erstellt werden, die stattdessen über den Link „Durchsuchen“ ausgeführt wird. Ausgabe 11922.

Problem bei der Wiederanmeldung nach dem Abmelden mittels ‚http‘ Authentifizierung

Bei Verwendung des ‚http‘ auth_type kann es unmöglich sein, sich wieder anzumelden (wenn die Abmeldung manuell oder nach einer Zeit der Inaktivität erfolgt). `Ausgabe 11898 <https://github.com/phpmyadmin/phpmyadmin/issues/11898>``_.