Jak uzyskać dostęp do zdalnego serwera za pomocą lokalnego klienta phpMyAdmin?

134

Zakładając, że istnieje zdalny serwer i mam klienta phpMyAdmin zainstalowanego lokalnie na moim komputerze. Jak mogę uzyskać dostęp do tego serwera i zarządzać nim przez klienta phpMyAdmin? Czy to jest możliwe?

MichalB
źródło
1
możesz także zainstalować phpmyadminobraz dockera lokalnie i połączyć się ze zdalnym serwerem MySQL. więcej szczegółów tutaj :docker run --name myadmin -d -e PMA_HOST=<REMOTE_DB_HOST> -e PMA_PORT=<REMOTE_DB_PORT> -p 8080:80 phpmyadmin/phpmyadmin
Xiao

Odpowiedzi:

175

Po prostu dodaj poniższe wiersze do /etc/phpmyadmin/config.inc.phppliku na dole:

$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

. Pojawi się lista rozwijana „Bieżący serwer:” z zarówno „127.0.0.1”, jak i jednym z przełączników krzywkowych „$ cfg ['Servers'] [$ i] ['host']” między serwerami.

więcej szczegółów: http://sforsuresh.in/access-remote-mysql-server-using-local-phpmyadmin/

Suresh Kamrushi
źródło
16
$i++To ważny punkt, ponieważ nie pozwoli nam stracić połączenie z bazą danych z domyślnego localhost.
Gaurav Ramanan
Musiałem również wykonać kroki opisane w tym poście po skonfigurowaniu go w phpMyAdmin, aby działał.
Ahmed Akhtar
2
/etc/phpmyadmin/config.inc.phpto poprawny plik do zmiany
Xiao
Powyższa metoda jest absolutnie poprawna, ale dlaczego wszyscy nie powiedzieliście mi, że będę musiał dodać lub poprosić o dodanie mojego adresu IP w Remote mySql. inaczej to nie zadziała. Proszę, przyjaciele też to zauważają
Jaydeep Goswami
Jeśli ktoś pracuje w systemie Apple, config.inc.phpplik znajduje się w Applications/XAMPP/xamppfiles/phpmyadmin/config.inc.phppliku.
Anirudha Mahale
23

Z pewnością jest możliwy dostęp do zdalnego serwera MySQL z lokalnej instancji phpMyAdmin, jak wskazywały inne odpowiedzi. Aby to zadziałało, musisz skonfigurować serwer MySQL zdalnego serwera, aby akceptował połączenia zdalne i zezwalał na ruch przez zaporę ogniową dla numeru portu, którego MySQL nasłuchuje. Wolę nieco inne rozwiązanie obejmujące tunelowanie SSH .

Następujące polecenie skonfiguruje tunel SSH, który przekieruje wszystkie żądania wysłane do portu 3307 z komputera lokalnego do portu 3306 na komputerze zdalnym:

ssh -NL 3307:localhost:3306 root@REMOTE_HOST

Po wyświetleniu monitu należy wprowadzić hasło użytkownika root na komputerze zdalnym. To otworzy tunel. Jeśli chcesz uruchomić to w tle, musisz dodać -fargument i skonfigurować SSH bez hasła między komputerem lokalnym a komputerem zdalnym.

Po uruchomieniu tunelu SSH możesz dodać zdalny serwer do listy serwerów w lokalnym phpMyAdminie, modyfikując /etc/phpmyadmin/config.inc.phpplik. Dodaj na końcu pliku:

$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++;

Napisałem bardziej szczegółowy wpis na blogu dokładnie o tym, na wypadek gdybyś potrzebował dodatkowej pomocy.

chłód
źródło
1
Myślę, że to bezpieczne rozwiązanie. Otwarcie MySQL na bezpośredni dostęp zdalny jest ogólnie uważane za złą praktykę bezpieczeństwa, jeśli nie jest to absolutnie konieczne.
Omn
1
Odpowiedź c.hill nie jest całkiem poprawna. Uwaga: adres wiązania musi być ustawiony na adres pętli zwrotnej w pliku mysql my.cnf.
Nie musisz być rootem na zdalnym hoście. most działa idealnie, dzięki! Nie jestem jednak pewien co do konfiguracji, wolę odpowiedź Suresha Kamrushiego. $++zdecydowanie powinien być pierwszą linią, a nie ostatnią, przynajmniej dla mojego domyślnego phpmyadmin.conf.
frnhr
Właśnie natknąłem się na przypadek, w którym musiałem zmienić $ cfg ['Servers'] [$ i] ['auth_type'] = 'config'; // zachowaj to jako konfigurację $ cfg ['Serwery'] [$ i] ['auth_type'] = 'cookie'; // zachowaj to jako config. Więc dzięki za tę wskazówkę!
Phil Lawlor
Najlepszym rozwiązaniem!
Ghasem Sadeghi
23

Można to zrobić, ale musisz zmienić konfigurację phpMyAdmina, przeczytaj ten post: http://www.danielmois.com/article/Manage_remote_databases_from_localhost_with_phpMyAdmin

Jeśli z jakiegoś powodu link zniknie, możesz wykonać następujące czynności:

  • Znajdź plik konfiguracyjny phpMyAdmina o nazwie config.inc.php
  • Znajdź $cfg['Servers'][$i]['host']zmienną i ustaw ją na adres IP lub nazwę hosta zdalnego serwera
  • Znajdź $cfg['Servers'][$i]['port']zmienną i ustaw ją na zdalny port mysql. Zwykle tak jest3306
  • Znajdź $cfg['Servers'][$i]['user']i $cfg['Servers'][$i]['password']zmienne i ustawić je do swojej nazwy użytkownika i hasła do zdalnego serwera

Bez odpowiedniej konfiguracji serwera połączenie może być wolniejsze niż na przykład połączenie lokalne, prawdopodobnie byłoby nieco szybsze użycie adresów IP zamiast nazw hostów, aby uniknąć konieczności wyszukiwania adresu IP na podstawie nazwy hosta.

Ponadto pamiętaj, że nazwa użytkownika i hasło do zdalnej bazy danych są przechowywane w postaci zwykłego tekstu, gdy łączysz się w ten sposób, więc powinieneś podjąć kroki, aby nikt nie miał dostępu do tego pliku konfiguracyjnego. Alternatywnie możesz pozostawić zmienne nazwy użytkownika i hasła puste, aby przy każdym logowaniu pojawiał się monit o ich wprowadzenie, co jest o wiele bezpieczniejsze.

Phil Cross
źródło
3
Musisz również mieć zaporę ogniową na instancji bazy danych, która zezwala na ruch, oraz użytkownika na serwerze DB z uprawnieniami do zdalnego dostępu.
ceejayoz
Czy mogę tutaj zadać pytanie? Jako nowicjusz jestem ciekawy, jaką formę powinien mieć link, który chcę wprowadzić w przeglądarce, aby uzyskać dostęp do bazy danych za pośrednictwem phpMyAdmina, który jest zainstalowany na serwerze mojego klienta, który sam obsługuje witrynę.
Garavani
11

Śledź ten wpis na blogu. Możesz to zrobić bardzo łatwo. https://wadsashika.wordpress.com/2015/01/06/manage-remote-mysql-database-locally-using-phpmyadmin/

Plik config.inc.php zawiera ustawienia konfiguracyjne instalacji phpMyAdmina. Używa tablicy do przechowywania zestawów opcji konfiguracyjnych dla każdego serwera, z którym może się połączyć, a domyślnie jest tylko jeden, twoja maszyna lub localhost. Aby połączyć się z innym serwerem, musiałbyś dodać kolejny zestaw opcji konfiguracyjnych do tablicy konfiguracyjnej. Musisz edytować ten plik konfiguracyjny.

Najpierw otwórz plik config.inc.php przechowywany w folderze phpMyAdmin . Na serwerze wampa możesz go znaleźć w folderze wamp \ apps \ phpmyadmin . Następnie dodaj następującą część do tego pliku.

$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';

Zobaczmy, jakie jest znaczenie tych zmiennych.

$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

Po dodaniu tej części konfiguracyjnej zrestartuj serwer, a teraz strona główna phpMyAdmina zmieni się i pokaże pole do wyboru serwera.

Teraz możesz wybrać serwer i uzyskać dostęp do zdalnej bazy danych, wprowadzając nazwę użytkownika i hasło do tej bazy danych.

Dulanga Sashika
źródło
1
prosimy o dokładniejsze i bardziej szczegółowe wyjaśnienie odpowiedzi. Odpowiedzi dotyczące linków są dobre, ale mogą być nieosiągalne, jeśli łącze ulegnie uszkodzeniu z jakiegokolwiek powodu.
Milad Faridnia
9

Jak stwierdzono w odpowiedzi c.hill answer, jeśli chcesz mieć bezpieczne rozwiązanie , radziłbym otworzyć tunel SSH do twojego serwera.

Oto sposób na zrobienie tego dla użytkowników systemu Windows :

  1. Pobierz Plink and Putty ze strony internetowej Putty i umieść pliki w wybranym folderze (w moim przykładzie C:\Putty)

  2. Otwórz konsolę Windows i przejdź do folderu Plink: cd C:\Putty

  3. Otwórz tunel SSH i przekieruj do portu 3307:

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

Gdzie:

  • 3307 to port lokalny, do którego chcesz przekierować
  • localhost to adres bazy danych MySQL na zdalnym serwerze (domyślnie localhost)
  • 3306 to port używany przez PhpMyAdmin na zdalnym serwerze (domyślnie 3306)

Wreszcie możesz skonfigurować PhpMyAdmin:

  1. Dodaj zdalny serwer do lokalnej konfiguracji PhpMyAdmin, dodając następujący wiersz na końcu config.inc.php

Linie do dodania:

$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. Połączenie powinno być teraz dostępne pod adresem http://127.0.0.1/phpmyadmin

Jeśli nie chcesz otwierać konsoli za każdym razem, gdy chcesz łączyć się ze zdalnym serwerem, po prostu utwórz plik wsadowy (zapisując 2 wiersze poleceń w pliku .bat).

Yannickv
źródło
6

Możesz ustawić w pliku config.inc.php instalacji phpMyAdmin.

$cfg['Servers'][$i]['host'] = '';
oo_miguel
źródło
5

Dodałbym to jako komentarz, ale moja reputacja nie jest jeszcze wystarczająco wysoka.

W wersji 4.5.4.1deb2ubuntu2 i zgaduję inne wersje 4.5.x lub nowsze. W ogóle nie ma potrzeby modyfikowania pliku config.inc.php. Zamiast tego przejdź do jeszcze jednego katalogu w dół conf.d.

Utwórz nowy plik z rozszerzeniem „.php” i dodaj linie. Jest to lepsze podejście modułowe i izoluje informacje o dostępie do każdego zdalnego serwera bazy danych.

Rozpoznać
źródło
2

Przejdź do pliku \ phpMyAdmin \ config.inc.php na samym dole, zmień szczegóły hostingu, takie jak host, nazwa użytkownika, hasło itp.

Patrick R.
źródło
2

W Ubuntu

Wystarczy zmodyfikować pojedynczy plik w folderze PHPMyAdmin, np. „Config.inc.php”. Po prostu dodaj poniższe wiersze do swojego „config.inc.php”.

Lokalizacja pliku: /var/lib/phpmyadmin/config.inc.phpLUB /etc/phpmyadmin/config.inc.php

Może nie masz uprawnień do edycji tego pliku, po prostu nadaj uprawnienia za pomocą tego polecenia

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

LUB (w różnych systemach może być konieczne sprawdzenie tych dwóch lokalizacji)

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

Następnie skopiuj i wklej kod do swojego config.inc.phppliku

    $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;

Wprowadź odpowiednie zmiany w danych serwera

byteC0de
źródło
1

Metoda 1 (dla wielu serwerów)

Najpierw zróbmy kopię zapasową oryginalnej konfiguracji.

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

Teraz w / usr / share / doc / phpmyadmin / examples / zobaczysz plik config.manyhosts.inc.php . Po prostu skopiuj do / etc / phpmyadmin / używając polecenia poniżej:

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

Edytuj plik config.inc.php

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

Szukaj :

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

I dodaj zapisywanie tablicy IP lub nazwy hosta (w nano CTRL + X naciśnij Y) i wyjdź. Gotowe

Metoda 2 (pojedynczy serwer) Edytuj plik config.inc.php

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

Szukaj :

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

I zamień na:

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

Pamiętaj, aby zastąpić adres 192.168.1.100 własnym serwerem ip mysql.

Przepraszam za mój zły angielski (winę ponosi tłumacz Google: D)

Cornea Valentin
źródło
1

Podczas testu znajduję plik config.default.php

następnie znajdź $ cfg ['AllowArbitraryServer'] = false;

następnie ustaw wartość true

uwaga: na Ubuntu plik w ścieżce /usr/share/phpmyadmin/libraries/config.default.php

wtedy na głównej stronie PHPMyAdmin znajdziesz nową nazwę pliku SERVER, możesz dodać do niej dowolny adres IP lub localhost dla lokalnej bazy danych.

Mohannd
źródło
0

W systemie Windows z zainstalowanym serwerem Wamp możesz znaleźć plik konfiguracyjny

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

Zmień odpowiednio linię śruby

$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'] = '';
dekoder
źródło
-1

Usuń całe wpisy z /etc/http/conf.d/phpMyAdmin.conf

A poniżej wpisuje się w powyższym pliku,

<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>

Następnie,

uruchom poniższe polecenie w wierszu polecenia MySQL,

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

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

Dla odniesienia: Zezwól IP na dostęp do zabezpieczonego PhpMyAdmin

syed191
źródło