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

У меня есть набор данных из 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 не очень помогает.

Вам нужно будет более подробно объяснить, чего вы здесь пытаетесь достичь. Вы всегда можете настроить пользователя / пароли MySQL на прием с любого адреса (%) или подсети.

hardillb 27.05.2018 20:35
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
0
1
892
1

Ответы 1

Хорошо, поэтому, как я сказал в комментариях, вы можете создать пару имени пользователя / пароля для MySQL, которой может быть предоставлено разрешение на любой IP-адрес (что менее безопасно, если имя пользователя / пароль скомпрометировано. Установите хост на '%', чтобы разрешить hosts при настройке параметров гранта).

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

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

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

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

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

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

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

Другие вопросы по теме