Запрос базы данных MySQL на удаленном веб-сервере через SSH - PullRequest
0 голосов
/ 10 ноября 2011

У нас есть внутренняя база данных MySQL, которую наш отдел обслуживания клиентов использует для цитат, и внешняя база данных MySQL на нашем веб-сайте, которую наши клиенты используют для цитат. У меня есть PHP-отчет, который я написал, который дает мне информацию из внутренней базы данных. Теперь я хотел бы изменить отчет, включив в него также данные из внешней базы данных. Мне нужно подключиться к внешней базе данных, используя соединение SSH. Я пытался использовать cURL или SSH2, но я не уверен, что любой из них является правильным способом сделать это. Кто-нибудь раньше обращался к базе данных SSH MySQL на веб-сервере, или кто-нибудь знает, что мне нужно сделать, чтобы это работало? Спасибо за любую помощь, вы можете дать!

Ответы [ 3 ]

1 голос
/ 10 ноября 2011

Я на самом деле использую клиент MySQL GUI под названием «Sequel Pro», который предлагает возможность подключения к MySQL через SSH-соединение.Это вполне выполнимо, хотя, если у вас есть возможность подключиться к БД без нее (например, вы можете подключиться к ней «извне» хоста), вы должны предпочесть это.

самый простой способ, которым я представляю васможет запросить вашу БД через SSH, это использовать переадресацию портов SSH, поэтому вы бы породили процесс, который будет делать ssh user@host-that-has-the-db -L3306:localhost:3306, а затем вы подключите соединитель MySQL к localhost.

-L Аргумент SSH указывает ему переадресацию локального порта, поэтому SSH будет прослушивать локальный порт и перенаправлять то, что он там получает, прямо на указанный удаленный хост / порт с другого конца.очевидно, мой пример использует порт 3306 на обоих концах, но это можно изменить соответствующим образом (RTM, чтобы иметь больше об этом)

0 голосов
/ 10 ноября 2011

Вы устанавливаете туннель от некоторого доступного порта на локальном сервере до порта mysql на удаленном сервере:

ssh -L 3307:localhost:3306 someuser@remoteserver

Это создает туннель, прослушивающий порт 3307 в локальной системе, который подключается кпорт 3306 (MySQL) на удаленном сервере.

Затем укажите ваш PHP-код для подключения к порту 3307 вместо 3306, и он будет туннелирован на mysql на удаленном сервере.

0 голосов
/ 10 ноября 2011

Да, вы можете запрашивать mysql из bash через SSH, но это не лучший и масштабируемый способ.Лучшим решением будет создание веб-службы REST на производственных серверах.Затем ваша внутренняя система запросит эту удаленную службу с аутентификацией.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...