Использование SSH туннеля для подключения к удаленной базе данных MYSQL из Node-Red - PullRequest
0 голосов
/ 27 мая 2018

У меня есть набор данных из Node-Red, которые я хочу отправить в удаленную базу данных MYSQL.Система Node-Red работает на Raspberry Pi.Как мне сделать эту работу?Я знаю, как это сделать с помощью Node.JS, но я не уверен, как это сделать в Node-Red.IP-адрес Pi является динамическим, поэтому простая авторизация его IP-адреса не работает, к сожалению.

Заранее спасибо!

РЕДАКТИРОВАТЬ для уточнения:

Я хочу подключитьсяв удаленную базу данных MYSQL, которая размещена на моем веб-хостинге.Я подключил Raspberry Pi к батарее и хочу сохранить эту информацию в вышеупомянутой базе данных.Поскольку в разных местах будет несколько настроек батарей, я не могу сохранить данные локально.Итак, так или иначе мне нужен доступ к удаленной базе данных через Node-Red.Авторизация одного IP-адреса не работает, поскольку IP-адрес сети Raspberry Pi является динамическим и, следовательно, изменяется.Я думаю, что SSH-туннель может быть решением, но я не знаю, как это сделать в Node-Red, и Google не очень помогает.

1 Ответ

0 голосов
/ 27 мая 2018

ОК, поэтому, как я уже сказал в комментариях, вы можете создать пару «Имя пользователя / Пароль» для MySQL, и вам может быть предоставлено разрешение на любой IP-адрес (который менее безопасен, если имя пользователя / пароль взломаны. Установите для хоста значение «%»разрешить все хосты при настройке параметров предоставления).

Чтобы снизить риск, вы можете ограничить имя пользователя / пароль определенной подсетью.Это может быть сеть Wi-Fi или подсеть, связанная с общедоступным IP-адресом (это должен быть общедоступный диапазон, поскольку почти все сотовые интернет-провайдеры используют CGNAT), диапазон оператора сотовой связи, который вы можете использовать.(Подробности см. В этом вопросе Как предоставить удаленный доступ к MySQL для всей подсети? ).

Если вы хотите использовать SSH-туннель, то обычно это делается вне Node-REDс помощью командной строки ssh, например

ssh -L localhost:3306:localhost:3306 remote.host.com

Затем настройте узел MySQL Node-RED так, чтобы он указывал на localhost.

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

Возможно, вы также захотите настроить аутентификацию с открытым / закрытым ключом для соединения ssh.

Возможно, вы сможете запуститькоманда ssh в узле node-red-daemon, которая должна перезапустить соединение, если оно будет сброшено.

...