Дистанционное подключение к БД MYSQL через тоннель SSH
Применимость:
Слова для поиска: mysql
Задача:
Как подключиться по сети к базе данных mysql не открывая доступ к службе?
Как удаленно использовать графический интерфейс для работы с MySQL?
Решение:
Можно использовать тоннель по протоколу ssh и таким образом подключиться к службе как бы локально.
При этом вы сможете использовать не только консольного клиента mysql, но и любые программы установленные на вашем компьютере, например MySQL Workbench, Eclipse SQL Explorer, mysql-admin, mysql-query-browser или локально установленный PHPMyAdmin.
Решение пригодно для postgresql и прочих подобных сервисов.
UNIX/Linux
Для этого, если у вас UNIX/Linux, выполните команду в консоли:
ssh -L 3306:localhost:3306 user@server.net
Эта команда откроет на вашем компьютере локально порт 3306 и перенаправит все запросы к этому порту на порт 3306 вашего сервера.
Синтаксис: ssh -L <localport>hostname<remoteport> <username>@<servername>
Учтите, что если на вашем компьютере работает демон mysql, то порт 3306 уже занят и команда работать не будет.
В этом случае вам надо использовать любой свободный порт, например:
ssh -L 33060:localhost:3306 user@server.net
Вы сможете подключаться к вашему серверу указывая именно этот порт, например:
Если вы используете MySQL Workbench, то там есть встроенные средства для подключения через SSH
Windows
Если у вас на компьютере Windows, то вы сможете использовать PuTTY. Это бесплатное программное обеспечение, скачать ее можно на официальном сайте.
Запустите программу.
В настроек Session в поле Имя хоста (Host Name) укажите адрес вашего сервера.
Перейдите в категорию настроек Connection > SSH > Tunnels и в поле Source port укажите значение 3306, в поле Destination — 127.0.0.1:3306.
Нажмите кнопку Open. После ввода пароля установится соединение и можно будет работать.
Для соединения с базой данных в качестве адреса сервера указывайте 127.0.0.1 и порт 3306.