Соединение с MySQL через SSH 20.06.2010
Если перед вами встала задача соединиться с удаленной базой данной, которая, по очевидным причинам, не доступна извне, то я могу предложить вам по крайней мере 3 варианта решения этой проблемы.
Открыть к ней доступ извне, тем самым снизив уровень безопасности.- Соединиться через ssh и выполнять команды вида:
-
-
"SELECT * FROM `table`" |
-
- Сделать проброс соединения через SSH
Так как первых два варианта глупые чуть более, чем полностью, остановимся на третьем. Для этого нам понадобится выполнить всего одну команду в консоле:
-
-
ssh -L 3307:localhost:3306 user@remote-host.com
-
Где 3307 — локальный порт, к которому нужно присоединяться из PHP, localhost — локальный хост, 3306 — удаленный порт, user@remote-host.com — пользователь@удаленный хост
Подводные камни
- 1. Команду нужно выполнять после каждого перезапуска сервера и контролировать работоспособность
- 2. Время отклика возрастет, так как добавятся накладные расходы на шифрование/расшифровывание
- 3. На локальном компьютере появится уязвимость удаленного сервера, так как есть прямой проброс соединения. Так что следует для порта 3307 заблокировать доступ извне через iptable или брандмауэр
