Как получить доступ к удаленному серверу с локальным клиентом phpMyAdmin?

avatar
MichalB
28 мая 2013 в 21:11
316495
13
151

Предположим, что есть удаленный сервер и на моем компьютере локально установлен клиент phpMyAdmin. Как я могу получить доступ к этому серверу и управлять им через клиент phpMyAdmin? Это возможно?

Источник
XoXo
14 февраля 2019 в 15:40
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

Ответы (13)

avatar
Mohannd
4 мая 2020 в 04:16
3

Найдите файл библиотеки / config.default.php

затем найдите $ cfg ['AllowArbitraryServer'] = false;

затем установите для него значение истина

примечание:

в ubuntu файл по пути /usr/share/phpmyadmin/libraries/config.default.php

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

avatar
decoder
9 декабря 2019 в 06:22
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'] = '';
avatar
Cornea Valentin
18 мая 2018 в 06:22
2

Метод 1 (для мультисерверов)

Во-первых, давайте сделаем резервную копию исходной конфигурации.

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

Теперь в / usr / share / doc / phpmyadmin / examples / вы увидите файл 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';

Не забудьте заменить 192.168.1.100 вашим собственным IP-сервером mysql.

Извините за мой плохой английский (виноват гугл-переводчик: D)

avatar
syed191
12 февраля 2018 в 11:22
-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

avatar
Ken
14 марта 2017 в 19:16
5

Я бы добавил это как комментарий, но моя репутация еще недостаточно высока.

Под версией 4.5.4.1deb2ubuntu2, и я предполагаю, что любые другие версии 4.5.x или новее. Нет необходимости изменять файл config.inc.php вообще. Вместо этого перейдите еще на один каталог вниз по conf.d.

Создайте новый файл с расширением .php и добавьте строки. Это лучший модульный подход, который изолирует информацию о доступе к каждому удаленному серверу базы данных.

avatar
Patrick R
18 января 2017 в 05:29
2

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

avatar
byteC0de
26 сентября 2016 в 07:08
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;

И внесите соответствующие изменения в данные вашего сервера

avatar
Yannickv
19 января 2015 в 10:41
9

Как указано в ответе c.hill, если вам нужно безопасное решение , я бы посоветовал открыть SSH-туннель к вашему серверу.

Вот способ сделать это для пользователей Windows :

  1. Загрузите Plink and 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).

avatar
Dulanga Sashika
14 января 2015 в 04:30
12

Следуйте за этим сообщением в блоге. Вы можете сделать это очень легко. 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 изменится, и на ней появится поле для выбора сервера.

Теперь вы можете выбрать свой сервер и получить доступ к своей удаленной базе данных, введя имя пользователя и пароль для этой базы данных.

Milad Faridnia
14 января 2015 в 04:55
1

Не могли бы вы быть более точными и подробнее объяснить свой ответ. Ответы на ссылки хороши, но они могут быть недоступны, если ссылка повреждена по какой-либо причине.

avatar
c.hill
24 апреля 2014 в 13:50
26

Конечно, можно получить доступ к удаленному серверу MySQL из локального экземпляра phpMyAdmin, как указывали другие ответы. И чтобы это работало, вы должны настроить сервер MySQL удаленного сервера на прием удаленных подключений и разрешить трафик через брандмауэр для номера порта, который прослушивает MySQL. Я предпочитаю немного другое решение, включающее туннелирование SSH.

Следующая команда настроит SSH-туннель, который будет перенаправлять все запросы, сделанные на порт 3307 с вашего локального компьютера, на порт 3306 на удаленном компьютере:

ssh -NL 3307:localhost:3306 root@REMOTE_HOST

При появлении запроса следует ввести пароль для пользователя root на удаленном компьютере. Это откроет туннель. Если вы хотите запустить это в фоновом режиме, вам нужно добавить аргумент -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++;

Я написал более подробную запись в блоге именно об этом, на случай, если вам понадобится дополнительная помощь.

Omn
12 сентября 2014 в 20:40
2

Думаю, это безопасное решение. Открытие mySQL для прямого удаленного доступа обычно считается плохой практикой безопасности, если это не является абсолютно необходимым.

user4292947
25 ноября 2014 в 18:16
1

Ответ c.hill не совсем правильный. Обратите внимание: адрес привязки должен быть установлен на адрес обратной связи в файле mysql my.cnf.

frnhr
16 сентября 2015 в 21:53
0

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

Phil Lawlor
2 февраля 2016 в 14:58
0

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

Ghasem Sadeghi
19 февраля 2020 в 07:26
0

Лучшее решение!

Pablo Bianchi
31 августа 2020 в 06:51
0

Вы можете получить доступ к серверу базы данных, доступному только с сервера, который, в свою очередь, должен пройти через jumpServer: ssh -v -N -L 3306:databaseServer:3306 -J jumpUsername@jumpServer usrname@Server. Протестируйте на своем хосте с nc -zv localhost 3306. Рассмотрите возможность использования чего-то вроде DBeaver вместо phpMyAdmin.

avatar
Suresh Kamrushi
28 февраля 2014 в 10:31
212

Просто добавьте строки ниже в свой /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

Вы получите Current Server: выпадающий список с обоими 127.0.0.1 и тем, что вы предоставили с $cfg['Servers'][$i]['host'], может переключаться между серверами.

Подробнее: http://sforsuresh.in/access-remote-mysql-server-using-local-phpmyadmin/

Gaurav Ramanan
30 декабря 2014 в 11:44
18

$i++ - важный момент, так как это не заставит нас потерять соединение с базой данных со значением по умолчанию localhost.

Ahmed Akhtar
26 мая 2017 в 08:03
0

Мне также пришлось выполнить шаги из этого сообщения после его настройки в phpMyAdmin, чтобы заставить его работать.

XoXo
22 октября 2018 в 13:35
2

/etc/phpmyadmin/config.inc.php - это правильный файл, который нужно изменить

Jaydeep Goswami
28 июня 2019 в 10:26
0

Вышеупомянутый метод абсолютно правильный, но почему вы все не сказали мне, что мне нужно добавить или добавить мой IP-адрес в Remote mySql. иначе не получится. Пожалуйста, друзья тоже это заметят

Anirudha Mahale
28 марта 2020 в 12:19
0

Если кто-то работает в системе Apple, то файл config.inc.php находится в файле Applications/XAMPP/xamppfiles/phpmyadmin/config.inc.php.

avatar
oo_miguel
28 мая 2013 в 21:15
6

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

$cfg['Servers'][$i]['host'] = '';
avatar
Phil Cross
28 мая 2013 в 21:13
26

Это можно сделать, но вам нужно изменить конфигурацию 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-адрес по имени хоста.

Кроме того, помните, что имя пользователя и пароль вашей удаленной базы данных хранятся в виде обычного текста при таком подключении, поэтому вы должны предпринять шаги, чтобы никто не мог получить доступ к этому файлу конфигурации. В качестве альтернативы вы можете оставить переменные имени пользователя и пароля пустыми, чтобы вам предлагалось вводить их каждый раз при входе в систему, что намного безопаснее.

ceejayoz
28 мая 2013 в 21:14
3

Вам также необходимо, чтобы брандмауэр на экземпляре базы данных разрешал трафик, а пользователь на сервере БД должен иметь права на удаленный доступ.

Garavani
29 мая 2018 в 07:03
0

Могу я задать здесь вопрос? Поскольку я новичок, мне любопытно, в какой форме должна быть ссылка, которую я хочу ввести в браузере, чтобы получить доступ к базе данных через phpMyAdmin, который установлен на сервере моего клиента, который сам размещает веб-сайт.