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