Wie greife ich mit dem lokalen phpMyAdmin-Client auf den Remote-Server zu?


134

Angenommen, es gibt einen Remote-Server und ich habe den phpMyAdmin-Client lokal auf meinem Computer installiert. Wie kann ich auf diesen Server zugreifen und ihn über den phpMyAdmin-Client verwalten? Ist das möglich?


1
Sie können das phpmyadminDocker-Image auch lokal installieren und eine Verbindung zu Ihrem Remote-MySQL-Server herstellen. Weitere Details hier :docker run --name myadmin -d -e PMA_HOST=<REMOTE_DB_HOST> -e PMA_PORT=<REMOTE_DB_PORT> -p 8080:80 phpmyadmin/phpmyadmin
Xiao

Antworten:


175

Fügen Sie Ihrer /etc/phpmyadmin/config.inc.phpDatei unten einfach die folgenden Zeilen hinzu :

$i++;
$cfg['Servers'][$i]['host'] = 'HostName:port'; //provide hostname and port if other than default
$cfg['Servers'][$i]['user'] = 'userName';   //user name for your remote server
$cfg['Servers'][$i]['password'] = 'Password';  //password
$cfg['Servers'][$i]['auth_type'] = 'config';       // keep it as config

. Sie erhalten die Dropdown-Liste "Aktueller Server:" mit "127.0.0.1" und einem Dropdown-Menü "$ cfg ['Server'] [$ i] ['Host']" zwischen den Servern.

Weitere Details: http://sforsuresh.in/access-remote-mysql-server-using-local-phpmyadmin/


16
Das $i++ist ein wichtiger Punkt , da dies wir nicht die Datenbankverbindung mit dem Standard verlieren localhost.
Gaurav Ramanan

Ich musste auch die Schritte in diesem Beitrag befolgen, nachdem ich ihn in phpMyAdmin eingerichtet hatte, damit er funktioniert.
Ahmed Akhtar

2
/etc/phpmyadmin/config.inc.phpist die richtige Datei zu ändern
Xiao

Die obige Methode ist absolut korrekt, aber warum Sie mir nicht alle gesagt haben, dass ich meine IP-Adresse in Remote mySql hinzufügen oder hinzufügen muss. Andernfalls funktioniert es nicht. Bitte Freunde beachten dies auch
Jaydeep Goswami

Wenn jemand an einem Apple-System arbeitet config.inc.php, befindet sich die Datei unter Applications/XAMPP/xamppfiles/phpmyadmin/config.inc.phpDatei.
Anirudha Mahale

23

Es ist sicherlich möglich, von einer lokalen Instanz von phpMyAdmin auf einen Remote-MySQL-Server zuzugreifen, wie die anderen Antworten gezeigt haben. Damit dies funktioniert, müssen Sie den MySQL-Server des Remote-Servers so konfigurieren, dass Remote-Verbindungen akzeptiert werden , und den Datenverkehr durch die Firewall für die Portnummer zulassen, die MySQL abhört. Ich bevorzuge eine etwas andere Lösung mit SSH-Tunneling .

Mit dem folgenden Befehl wird ein SSH-Tunnel eingerichtet, der alle an Port 3307 von Ihrem lokalen Computer gestellten Anforderungen an Port 3306 auf dem Remotecomputer weiterleitet:

ssh -NL 3307:localhost:3306 root@REMOTE_HOST

Wenn Sie dazu aufgefordert werden, sollten Sie das Kennwort für den Root-Benutzer auf dem Remotecomputer eingeben. Dadurch wird der Tunnel geöffnet. Wenn Sie dies im Hintergrund ausführen möchten, müssen Sie das -fArgument hinzufügen und Kennwortloses SSH zwischen Ihrem lokalen Computer und dem Remotecomputer einrichten .

Nachdem der SSH-Tunnel funktioniert hat, können Sie den Remote-Server zur Serverliste in Ihrem lokalen phpMyAdmin hinzufügen, indem Sie die /etc/phpmyadmin/config.inc.phpDatei ändern . Fügen Sie am Ende der Datei Folgendes hinzu:

$cfg['Servers'][$i]['verbose']       = 'Remote Server 1';// Change this to whatever you like.
$cfg['Servers'][$i]['host']          = '127.0.0.1';
$cfg['Servers'][$i]['port']          = '3307';
$cfg['Servers'][$i]['connect_type']  = 'tcp';
$cfg['Servers'][$i]['extension']     = 'mysqli';
$cfg['Servers'][$i]['compress']      = FALSE;
$cfg['Servers'][$i]['auth_type']     = 'cookie';
$i++;

Ich habe ausführlicher geschrieben Blog-Beitrag darüber geschrieben, falls Sie zusätzliche Hilfe benötigen.


1
Ich denke, das ist die sichere Lösung. Das Öffnen von mySQL für den direkten Remotezugriff wird im Allgemeinen als schlechte Sicherheitspraxis angesehen, wenn dies nicht unbedingt erforderlich ist.
Omn

1
Die Antwort von c.hill ist nicht ganz richtig. Bitte beachten Sie: Die Bindungsadresse muss auf die Loop-Back-Adresse in der Datei mysql my.cnf eingestellt sein.

Sie müssen nicht root auf dem Remote-Host sein. Die Brücke funktioniert perfekt, danke! Ich bin mir bei der Konfiguration nicht so sicher, bevorzuge jedoch die Antwort von Suresh Kamrushi. $++sollte definitiv die erste Zeile sein, nicht die letzte, zumindest für meine Standard-phpmyadmin.conf.
Freitag,

Ich bin gerade auf einen Fall gestoßen, in dem ich $ cfg ['Server'] [$ i] ['auth_type'] = 'config' ändern musste; // behalte es als Konfiguration für $ cfg ['Server'] [$ i] ['auth_type'] = 'cookie'; // behalte es als config. Also danke für diesen Tipp!
Phil Lawlor

Die beste Lösung!
Ghasem Sadeghi

23

Dies ist möglich, aber Sie müssen die Konfiguration von phpMyAdmin ändern. Lesen Sie diesen Beitrag: http://www.danielmois.com/article/Manage_remote_databases_from_localhost_with_phpMyAdmin

Wenn der Link aus irgendeinem Grund nicht mehr funktioniert, können Sie die folgenden Schritte ausführen:

  • Suchen Sie die Konfigurationsdatei von phpMyAdmin mit dem Namen config.inc.php
  • Finden Sie die $cfg['Servers'][$i]['host'] Variable und setzen Sie sie auf die IP oder den Hostnamen Ihres Remote-Servers
  • Suchen Sie die $cfg['Servers'][$i]['port']Variable und setzen Sie sie auf den Remote-MySQL-Port. Normalerweise ist das so3306
  • Finden Sie die $cfg['Servers'][$i]['user']und $cfg['Servers'][$i]['password']Variablen und legen Sie diese auf Ihrem Benutzernamen und Passwort für den Remote - Server

Ohne eine ordnungsgemäße Serverkonfiguration ist die Verbindung möglicherweise langsamer als eine lokale Verbindung. Es ist wahrscheinlich etwas schneller, IP-Adressen anstelle von Hostnamen zu verwenden, um zu vermeiden, dass der Server die IP-Adresse anhand des Hostnamens nachschlagen muss.

Denken Sie außerdem daran, dass der Benutzername und das Kennwort Ihrer entfernten Datenbank bei einer solchen Verbindung im Klartext gespeichert werden. Sie sollten daher Maßnahmen ergreifen, um sicherzustellen, dass niemand auf diese Konfigurationsdatei zugreifen kann. Alternativ können Sie die Variablen für Benutzername und Kennwort leer lassen, um bei jeder Anmeldung zur Eingabe aufgefordert zu werden. Dies ist wesentlich sicherer.


3
Außerdem muss die Firewall auf der Datenbankinstanz den Datenverkehr zulassen und ein Benutzer auf dem DB-Server über Berechtigungen für den Remotezugriff verfügen.
Ceejayoz

Darf ich hier eine Frage stellen? Als Neuling bin ich gespannt, welche Form der Link haben soll, den ich in den Browser eingeben möchte, um über phpMyAdmin auf eine Datenbank zuzugreifen, die auf einem Server meines Clients installiert ist, der selbst eine Website hostet.
Garavani

11

Folgen Sie diesem Blog-Beitrag. Sie können es sehr einfach tun. https://wadsashika.wordpress.com/2015/01/06/manage-remote-mysql-database-locally-using-phpmyadmin/

Die Datei config.inc.php enthält die Konfigurationseinstellungen für Ihre phpMyAdmin-Installation. Es verwendet ein Array zum Speichern von Konfigurationsoptionen für jeden Server, zu dem eine Verbindung hergestellt werden kann, und standardmäßig gibt es nur einen, Ihren eigenen Computer oder einen lokalen Host. Um eine Verbindung zu einem anderen Server herzustellen, müssten Sie dem Konfigurationsarray weitere Konfigurationsoptionen hinzufügen. Sie müssen diese Konfigurationsdatei bearbeiten.

Öffnen Sie zuerst die Datei config.inc.php im Ordner phpMyAdmin . Im Wamp- Server finden Sie ihn im Ordner wamp \ apps \ phpmyadmin . Fügen Sie dann den folgenden Teil zu dieser Datei hinzu.

$i++;
$cfg['Servers'][$i]['host']          = 'hostname/Ip Adress';
$cfg['Servers'][$i]['port']          = '';
$cfg['Servers'][$i]['socket']        = '';
$cfg['Servers'][$i]['connect_type']  = 'tcp';
$cfg['Servers'][$i]['extension']     = 'mysql';
$cfg['Servers'][$i]['compress']      = FALSE;
$cfg['Servers'][$i]['auth_type']     = 'config';
$cfg['Servers'][$i]['user']          = 'username';
$cfg['Servers'][$i]['password']      = 'password';

Mal sehen, was die Bedeutung dieser Variablen ist.

$i++ :- Incrementing variable for each server
$cfg[‘Servers’][$i][‘host’] :- Server host name or IP adress
$cfg[‘Servers’][$i][‘port’] :- MySQL port (Leave a blank for default port. Default MySQL port is 3306)
$cfg[‘Servers’][$i][‘socket’] :- Path to the socket (Leave a blank for default socket)
$cfg[‘Servers’][$i][‘connect_type’] :- How to connect to MySQL server (‘tcp or socket’)
$cfg[‘Servers’][$i][‘extension’] :- php MySQL extension to use (‘mysql or msqli’)
$cfg[‘Servers’][$i][‘compress’] :- Use compressed protocol for the MySQL connection (requires PHP >= 4.3.0)
$cfg[‘Servers’][$i][‘auth_type’] :- Method of Authentication
$cfg[‘Servers’][$i][‘username’] :- Username to the MySQL database in remote server
$cfg[‘Servers’][$i][‘password’] :- Password to the MySQL database int he remote server

Starten Sie nach dem Hinzufügen dieses Konfigurationsteils Ihren Server neu. Jetzt ändert sich Ihre phpMyAdmin-Homepage und es wird ein Feld zur Auswahl des Servers angezeigt.

Jetzt können Sie Ihren Server auswählen und auf Ihre entfernte Datenbank zugreifen, indem Sie den Benutzernamen und das Kennwort für diese Datenbank eingeben.


1
könnte bitte genauer sein und mehr über Ihre Antwort erklären. Linkantworten sind gut, aber möglicherweise nicht erreichbar, wenn der Link aus irgendeinem Grund beschädigt wird.
Milad Faridnia

9

Wie in Antwort c.hill angegeben Antwort angegeben, würde ich empfehlen, einen SSH-Tunnel für Ihren Server zu öffnen , wenn Sie eine sichere Lösung wünschen .

Hier ist der Weg, dies für Windows zu tun Benutzer:

  1. Laden Sie Plink and Putty von der Putty-Website herunter und legen Sie die Dateien in einem Ordner Ihrer Wahl ab (in meinem Beispiel)C:\Putty ).

  2. Öffnen Sie die Windows-Konsole und die CD in den Plink-Ordner: cd C:\Putty

  3. Öffnen Sie den SSH-Tunnel und leiten Sie zum Port 3307 um:

    plink -L 3307:localhost:3306 username@server_ip -i path_to_your_private_key.ppk

Wo:

  • 3307 ist der lokale Port, zu dem Sie umleiten möchten
  • localhost ist die Adresse der MySQL-Datenbank auf dem Remote-Server (standardmäßig localhost).
  • 3306 ist die Portverwendung für PhpMyAdmin auf dem Remote-Server (standardmäßig 3306).

Schließlich können Sie PhpMyAdmin einrichten:

  1. Fügen Sie den Remote-Server zu Ihrer lokalen PhpMyAdmin-Konfiguration hinzu, indem Sie am Ende die folgende Zeile hinzufügen config.inc.php hinzufügen

Zu fügende Zeilen:

$i++;   
$cfg['Servers'][$i]['verbose']          = 'Remote Dev server';
$cfg['Servers'][$i]['host']             = 'localhost';
$cfg['Servers'][$i]['port']             = '3307';
$cfg['Servers'][$i]['connect_type']     = 'tcp';
$cfg['Servers'][$i]['extension']        = 'mysqli';
$cfg['Servers'][$i]['compress']         = FALSE;
$cfg['Servers'][$i]['auth_type']        = 'cookie';
  1. Sie sollten jetzt in der Lage sein, eine Verbindung herzustellen http://127.0.0.1/phpmyadmin

Wenn Sie die Konsole nicht jedes Mal öffnen möchten, wenn Sie eine Verbindung zu Ihrem Remote-Server herstellen müssen, erstellen Sie einfach eine Batch-Datei (indem Sie die beiden Befehlszeilen in einer .bat-Datei speichern).


6

Sie können in der Datei config.inc.php Ihrer phpMyAdmin-Installation festlegen.

$cfg['Servers'][$i]['host'] = '';

5

Ich hätte dies als Kommentar hinzugefügt, aber mein Ruf ist noch nicht hoch genug.

Unter Version 4.5.4.1deb2ubuntu2, und ich vermute alle anderen Versionen 4.5.x oder neuer. Die Datei config.inc.php muss überhaupt nicht geändert werden. Gehen Sie stattdessen ein weiteres Verzeichnis nach unten conf.d.

Erstellen Sie eine neue Datei mit der Erweiterung '.php' und fügen Sie die Zeilen hinzu. Dies ist ein besser modularisierter Ansatz und isoliert die Zugriffsinformationen aller Remote-Datenbankserver.


2

Gehen Sie ganz unten zur Datei \ phpMyAdmin \ config.inc.php und ändern Sie die Hosting-Details wie Host, Benutzername, Passwort usw.


2

In Ubuntu

Sie müssen lediglich eine einzelne Datei im Ordner PHPMyAdmin ändern, z. B. "config.inc.php". Fügen Sie einfach die folgenden Zeilen zu Ihrer "config.inc.php" hinzu.

Dateispeicherort: /var/lib/phpmyadmin/config.inc.phpODER /etc/phpmyadmin/config.inc.php

Möglicherweise haben Sie nicht die Berechtigung zum Bearbeiten dieser Datei. Geben Sie einfach die Berechtigung mit diesem Befehl ein

sudo chmod 777 /var/lib/phpmyadmin/config.inc.php

ODER (in verschiedenen Systemen müssen Sie möglicherweise diese beiden Standorte überprüfen)

sudo chmod 777 /etc/phpmyadmin/config.inc.php

Kopieren Sie dann den Code und fügen Sie ihn in Ihre config.inc.phpDatei ein

    $i++;
    $cfg['Servers'][$i]['auth_type']     = 'cookie';
    $cfg['Servers'][$i]['verbose'] = 'Database Server 2';
    $cfg['Servers'][$i]['host'] = '34.12.123.31';
    $cfg['Servers'][$i]['connect_type']  = 'tcp';
    $cfg['Servers'][$i]['compress']      = false;
    $cfg['Servers'][$i]['AllowNoPassword'] = false;

Nehmen Sie die entsprechenden Änderungen an Ihren Serverdetails vor


1

Methode 1 (für Multiserver)

Lassen Sie uns zunächst eine Sicherungskopie der ursprünglichen Konfiguration erstellen.

sudo cp /etc/phpmyadmin/config.inc.php      ~/ 

Jetzt sehen Sie in / usr / share / doc / phpmyadmin / examples / eine Datei config.manyhosts.inc.php . Kopieren Sie einfach mit dem folgenden Befehl nach / etc / phpmyadmin / :

sudo cp /usr/share/doc/phpmyadmin/examples/config.manyhosts.inc.php \
        /etc/phpmyadmin/config.inc.php

Bearbeiten Sie die Datei config.inc.php

sudo nano /etc/phpmyadmin/config.inc.php 

Suchen nach :

$hosts = array (
    "foo.example.com",
    "bar.example.com",
    "baz.example.com",
    "quux.example.com",
);

Fügen Sie Ihre IP- oder Hostnamen-Array-Speicherung hinzu (drücken Sie in Nano-STRG + X Y) und beenden Sie das Programm. Getan

Methode 2 (einzelner Server) Bearbeiten Sie die Datei config.inc.php

sudo nano /etc/phpmyadmin/config.inc.php 

Suchen nach :

/* Server parameters */
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;
}

Und ersetzen durch:

$cfg['Servers'][$i]['host'] = '192.168.1.100';
$cfg['Servers'][$i]['port'] = '3306';

Denken Sie daran, 192.168.1.100 durch Ihren eigenen MySQL-IP-Server zu ersetzen .

Entschuldigung für mein schlechtes Englisch (Google Übersetzer haben die Schuld: D)


1

Beim Testen finde ich die Datei config.default.php

dann finden $ cfg ['AllowArbitraryServer'] = false;

Setzen Sie es dann auf true

Hinweis: Unter Ubuntu die Datei im Pfad /usr/share/phpmyadmin/libraries/config.default.php

Dann finden Sie einen neuen Dateinamen SERVER auf der Hauptseite von PHPMyAdmin. Sie können ihm eine beliebige IP oder einen lokalen Host für die lokale Datenbank hinzufügen.


0

Unter Windows mit installiertem Wamp Server finden Sie möglicherweise die Konfigurationsdatei

C:\wamp64\apps\phpmyadmin4.8.4\config.inc.php

Ändern Sie die Bolow-Linie entsprechend

$cfg['Servers'][$i]['host'] = '127.0.0.1';
$cfg['Servers'][$i]['port'] = 3306;//$wampConf['mysqlPortUsed'];
$cfg['Servers'][$i]['extension'] = 'mysqli';
$cfg['Servers'][$i]['auth_type'] = 'cookie';
$cfg['Servers'][$i]['user'] = '';
$cfg['Servers'][$i]['password'] = '';

-1

Löschen Sie vollständige Einträge von /etc/http/conf.d/phpMyAdmin.conf

Und unten Entires in der obigen Datei,

<Directory /usr/share/phpMyAdmin/>
   AddDefaultCharset UTF-8

   <IfModule mod_authz_core.c>
     # Apache 2.4
     <RequireAny>
       #ADD following line:
       Require all granted
       Require ip 127.0.0.1
       Require ip ::1
     </RequireAny>
   </IfModule>
   <IfModule !mod_authz_core.c>
     # Apache 2.2
     #CHANGE following 2 lines:
     Order Allow,Deny
     Allow from All
     Allow from 127.0.0.1
     Allow from ::1
   </IfModule>
</Directory>

Dann,

Führen Sie den folgenden Befehl in der MySQL-Eingabeaufforderung aus.

GRANT ALL ON *.* to root@localhost IDENTIFIED BY 'root@<password>'

GRANT ALL ON *.* to root@'%' IDENTIFIED BY 'root@<password>'

Als Referenz: IP erlauben, auf Secured PhpMyAdmin zuzugreifen

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.