使用ssh隧道从red节点连接到远程mysql数据库

dced5bon  于 2021-06-23  发布在  Mysql
关注(0)|答案(1)|浏览(641)

我有一组数据从node red中滚出,我想发送到一个远程mysql数据库。节点红系统在树莓皮上运行。我该怎么做?我知道如何使用node.js,但我不知道如何做到这一点在节点红。pi的ip地址是动态的,所以简单地授权它的ip地址是行不通的。
提前谢谢!
编辑澄清:
我想连接到由我的网络主机托管的远程mysql数据库。我已经把一个树莓圆周率连接到电池上,我想把这个信息保存在前面提到的数据库中。由于将有几个电池设置在不同的位置,我不能保存数据本地。所以,不管怎样,我需要通过red节点访问远程数据库。授权一个ip地址不起作用,因为raspberry pi网络的ip是动态的,因此会发生变化。我认为ssh隧道可能是解决方案,但我不知道如何在node red中实现这一点,google也不是很有帮助。

1zmg4dgp

1zmg4dgp1#

好的,正如我在评论中所说的,你可以为mysql创建一个用户名/密码对,它可以被授予对任何ip地址的权限(如果用户名/密码被泄露,那么就不那么安全了)。将主机设置为“%”,以便在设置授予选项时允许所有主机)。
为了降低风险,您可以将用户名/密码限制为特定子网。这可以是wifi网络或与您可能使用的Hive提供商的piblic ip(它需要是公共范围,因为几乎所有的HiveISP都使用cgnat)范围相关联的子网(有关如何为整个子网授予对mysql的远程访问权限的详细信息,请参见此问题。
如果您想使用ssh隧道,那么这通常会在node red之外通过ssh命令行完成。

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

然后将节点配置为指向localhost。
因为连接看起来像来自mysql机器上的localhost,所以您需要确保用户名/密码被锁定到该主机上。
您可能还需要为ssh连接设置公钥/私钥身份验证。
您可以在node-red-daemon节点中运行ssh命令,如果连接被丢弃,该节点应该重新启动连接。

相关问题