Як отримати доступ до віддаленого сервера з локальним клієнтом phpMyAdmin?


134

Якщо припустити, що на моєму комп'ютері локально встановлений клієнт phpMyAdmin, я встановив локальний сервер. Як я можу отримати доступ до цього сервера і керувати ним через phpMyAdmin клієнт? Це можливо?


1
Ви також можете встановити phpmyadminзображення докера локально та підключитися до віддаленого сервера MySQL. Більше інформації тут :docker run --name myadmin -d -e PMA_HOST=<REMOTE_DB_HOST> -e PMA_PORT=<REMOTE_DB_PORT> -p 8080:80 phpmyadmin/phpmyadmin
Xiao

Відповіді:


175

Просто додайте нижче рядки до вашого /etc/phpmyadmin/config.inc.phpфайлу внизу:

$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

. Ви отримаєте спадний пункт "Поточний сервер:" як з "127.0.0.1", так і з одним, що ви надали з перемикачем кулачка "$ cfg ['Сервери"] [$ i] ["хост"] "між серверами.

детальніше: http://sforsuresh.in/access-remote-mysql-server-using-local-phpmyadmin/


16
Це $i++важливий момент, оскільки це не змусить нас втратити з'єднання з базою даних за замовчуванням localhost.
Гаурав Раманан

Я також повинен був дотримуватися кроків у цій публікації після її налаштування в phpMyAdmin, щоб він працював.
Ахмед Ахтар

2
/etc/phpmyadmin/config.inc.phpце правильний файл, який потрібно змінити
Сяо

Вищенаведений метод абсолютно правильний, але чому ви всі не сказали мені, що мені доведеться додати або отримати його мою ip адресу в віддаленій mySql. інакше це не вийде. Зверніть увагу, друзі, і на це
Jaydeep Goswami

Якщо хтось працює над системою Apple, то config.inc.phpфайл знаходиться у Applications/XAMPP/xamppfiles/phpmyadmin/config.inc.phpфайлі.
Анірудха Махале

23

Звичайно, можна отримати доступ до віддаленого сервера MySQL з локального примірника phpMyAdmin, як вказували інші відповіді. А щоб це працювало, вам потрібно налаштувати MySQL-сервер віддаленого сервера, щоб він міг приймати віддалені з'єднання та дозволити трафік через брандмауер для номера порту, який слухає MySQL. Я вважаю за краще дещо інше рішення, що стосується тунелювання SSH .

Наступна команда встановить тунель SSH, який буде пересилати всі запити, зроблені до порту 3307 з вашого локального апарату, до порту 3306 на віддаленій машині:

ssh -NL 3307:localhost:3306 root@REMOTE_HOST

Коли з’явиться запит, вам слід ввести пароль кореневого користувача на віддаленій машині. Це відкриє тунель. Якщо ви хочете запустити це у фоновому режимі, вам потрібно буде додати -fаргумент та встановити SSH без пароля між локальною машиною та віддаленою машиною.

Після того, як тунель SSH запрацює, ви можете додати віддалений сервер до списку серверів у вашому локальному phpMyAdmin, змінивши /etc/phpmyadmin/config.inc.phpфайл. Додайте до кінця файлу наступне:

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

Я написав більш поглиблену публікацію в блозі саме про це, якщо вам потрібна додаткова допомога.


1
Я думаю, що це безпечне рішення. Відкриття mySQL для прямого віддаленого доступу, як правило, вважається поганою практикою безпеки, якщо це абсолютно не потрібно.
Омн

1
c.hill відповідь не зовсім правильна. Будь ласка, зауважте: адресу прив'язки необхідно встановити на зворотну адресу циклу у файлі mysql my.cnf.

Немає необхідності викорінювати root на віддаленому хості. міст працює чудово, дякую! Я не дуже впевнений у налаштуваннях, хоча віддаю перевагу відповіді Суреша Камруші. $++безумовно, повинен бути перший рядок, а не останній, принаймні для мого типового phpmyadmin.conf.
frnhr

Я просто натрапив на випадок, коли мені потрібно було змінити $ cfg ['Сервери'] [$ i] ['auth_type'] = 'config'; // збережіть його як конфігурацію до $ cfg ['Сервери'] [$ i] ['auth_type'] = 'cookie'; // зберігати його як конфігурацію. Тож дякую за цю пораду!
Філ Лоулер

Найкраще рішення!
Ghasem Sadeghi

23

Це можна зробити, але вам потрібно змінити конфігурацію phpMyAdmin, прочитавши цей пост: http://www.danielmois.com/article/Manage_remote_databases_from_localhost_with_phpMyAdmin

Якщо з будь-якої причини посилання вмирає, ви можете скористатися наступними кроками:

  • Знайдіть файл конфігурації phpMyAdmin, названий config.inc.php
  • Знайдіть $cfg['Servers'][$i]['host']змінну та встановіть її на IP або ім'я хоста віддаленого сервера
  • Знайдіть $cfg['Servers'][$i]['port']змінну та встановіть її у віддалений порт mysql. Зазвичай це так3306
  • Знайдіть $cfg['Servers'][$i]['user']і $cfg['Servers'][$i]['password']змінні та встановіть їх на своє ім’я користувача та пароль для віддаленого сервера

Без належної конфігурації сервера з'єднання може бути повільніше, ніж локальне з'єднання, наприклад, можливо, буде трохи швидше використовувати IP-адреси замість імен хостів, щоб уникнути необхідності сервера шукати IP-адресу від імені хоста.

Крім того, пам’ятайте, що ім'я користувача та пароль вашої віддаленої бази даних зберігаються у простому тексті при такому підключенні, тому слід вжити заходів для того, щоб ніхто не мав доступу до цього конфігураційного файла. Крім того, ви можете залишити змінні імені користувача та пароля порожніми, щоб запропонувати вводити їх під час кожного входу, що набагато безпечніше.


3
Вам також потрібно мати брандмауер на екземплярі бази даних, що дозволяє здійснювати трафік, і користувач на сервері БД з правами на віддалений доступ.
ceejayoz

Чи можу я задати тут питання? Коли я новачок, мені цікаво, у якій формі має бути посилання, яке я хочу ввести у браузер, щоб отримати доступ до бази даних через phpMyAdmin, який встановлений на сервері мого клієнта, який сам розміщує веб-сайт.
Гаравани

11

Дотримуйтесь цієї публікації в блозі. Ви можете зробити це дуже легко. https://wadsashika.wordpress.com/2015/01/06/manage-remote-mysql-database-locally-using-phpmyadmin/

Файл config.inc.php містить параметри конфігурації для установки phpMyAdmin. Він використовує масив для зберігання наборів параметрів конфігурації для кожного сервера, до якого він може підключитися, і за замовчуванням є лише один, ваша власна машина або localhost. Для того, щоб підключитися до іншого сервера, вам доведеться додати інший набір параметрів конфігурації до масиву конфігурацій. Ви повинні відредагувати цей файл конфігурації.

Перший відкритий файл config.inc.php у папці phpMyAdmin . На сервері wamp ви можете знайти його в папці wamp \ apps \ phpmyadmin . Потім додайте наступну частину до цього файлу.

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

Подивимось, у чому сенс цих змінних.

$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

Після додавання цієї конфігураційної частини перезавантажте сервер, і тепер ваша домашня сторінка phpMyAdmin зміниться, і на ній з’явиться поле для вибору сервера.

Тепер ви можете вибрати сервер та отримати доступ до віддаленої бази даних, ввівши ім'я користувача та пароль для цієї бази даних.


1
будь ласка, будьте точнішими та поясніть більше про свою відповідь. Відповіді на посилання хороші, але можуть бути недосяжними, якщо посилання пошкоджується з будь-якої причини.
Мілад Фаридня

9

Як зазначено у відповіді c.hill відповідь, якщо ви хочете отримати безпечне рішення, я б порадив відкрити тунель SSH до вашого сервера.

Ось як це зробити для користувачів Windows :

  1. Завантажте Plink і Putty з веб-сайту Putty і помістіть файли у вибрану вами папку (на моєму прикладі C:\Putty)

  2. Відкрийте консоль Windows та компакт-диск у папку Plink: cd C:\Putty

  3. Відкрийте тунель SSH та переадресуйте на порт 3307:

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

Де:

  • 3307 - це локальний порт, на який потрібно переспрямувати
  • localhost - це адреса бази даних MySQL на віддаленому сервері (за умовчанням localhost)
  • 3306 - використання портів для PhpMyAdmin на віддаленому сервері (за замовчуванням 3306)

Нарешті, ви можете налаштувати PhpMyAdmin:

  1. Додайте віддалений сервер до локальної конфігурації PhpMyAdmin, додавши наступний рядок в кінці config.inc.php

Рядки додати:

$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. Ви можете мати змогу підключитися зараз за адресою http://127.0.0.1/phpmyadmin

Якщо ви не хочете відкривати консоль кожного разу, коли потрібно підключитися до віддаленого сервера, просто створіть пакетний файл (збереження 2 командних рядків у файлі .bat).


6

Ви можете встановити файл config.inc.php своєї установки phpMyAdmin.

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

5

Я б додав це як коментар, але моя репутація ще недостатньо висока.

Під версією 4.5.4.1deb2ubuntu2, і я здогадуюсь будь-які інші версії 4.5.x або новіші. Тут взагалі не потрібно змінювати файл config.inc.php. Замість цього зайдіть ще один каталог вниз conf.d.

Створіть новий файл із розширенням '.php' та додайте рядки. Це кращий модульований підхід та ізолює інформацію про доступ кожного сервера віддалених серверів баз даних.


2

Перейдіть до файлу \ phpMyAdmin \ config.inc.php в самому низу, змініть деталі хостингу, такі як хост, ім'я користувача, пароль тощо.


2

В Ubuntu

Просто потрібно змінити один файл у папці PHPMyAdmin, тобто "config.inc.php". Просто додайте нижче рядки до свого "config.inc.php".

Розташування файлу: /var/lib/phpmyadmin/config.inc.phpАБО /etc/phpmyadmin/config.inc.php

Можливо, у вас немає дозволу на редагування цього файлу, просто дайте дозвіл за допомогою цієї команди

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

АБО (в різних системах вам, можливо, доведеться перевірити ці два місця)

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

Потім скопіюйте та вставте код у свій config.inc.phpфайл

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

І внесіть відповідні зміни в дані вашого сервера


1

Спосіб 1 (для мультисервера)

Спочатку давайте зробимо резервну копію оригінального конфігурації.

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

Тепер у / usr / share / doc / phpmyadmin / example / ви побачите файл config.manyhosts.inc.php . Просто скопіюйте в / etc / phpmyadmin / за допомогою команди нижче:

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

Відредагуйте config.inc.php

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

Шукати :

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

І додайте збережений масив ip чи хоста (у nano CTRL + X натисніть Y) та вийдіть. Зроблено

Спосіб 2 (один сервер) Редагуйте config.inc.php

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

Шукати :

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

І замінити на:

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

Remeber замінить 192.168.1.100 на власному сервері mysql ip.

Вибачте за мою погану англійську (переклади google винні: D)


1

Як я тестую, він знаходить файл config.default.php

потім знайдіть $ cfg ['AllowArbitraryServer'] = false;

потім встановіть його на істинне

Примітка: на ubuntu файл у шляху /usr/share/phpmyadmin/libraries/config.default.php

тоді ви знайдете нове подане ім’я SERVER на головній сторінці PHPMyAdmin, ви можете додати до нього будь-який IP або localhost для локальної бази даних.


0

У Windows із встановленим сервером Wamp ви можете знайти файл конфігурації

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

Змініть лінію боула відповідно

$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

Видалити всі записи /etc/http/conf.d/phpMyAdmin.conf

А внизу введено вище файл,

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

Тоді,

запустити команду нижче в запиті MySQL,

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

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

Довідково: Дозволити IP доступу до захищеного PhpMyAdmin

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.