【发布时间】:2018-10-31 05:40:06
【问题描述】:
我刚刚购买了自己的域,包括在 plesk 服务器上进行虚拟主机。 幸运的是,他们还提供了一个 MySQL 数据库。当我插入我的凭据时,通过 MySQL 工作台(本地)访问数据库工作得很好(由于某种原因,唯一有效的连接方法是“通过 SSH 的标准 TCP/IP”(它甚至不需要私钥的位置)) ,但我找不到使用 node.js 完成这项工作的方法。 (我使用的是 8.11.1 版本)。
我决定使用 node.js,因为我想用 d3 进行一些交互式数据可视化,而且我有将近 40000 个数据点,我想将尽可能多的进程外包给服务器。
当然我想在本地和服务器上尝试一切。
根据我在工作台上使用的连接方法,我怀疑使用了一些 ssh 模块(仅使用 mysql 模块也不起作用)。现在我尝试了这些:
-
mysql-ssh (https://www.npmjs.com/package/mysql-ssh)
将我的凭据(包括私钥)放入示例代码只会返回此错误:
从我的mysqlssh.connect中的第一个块中,相当于mysql工作台连接配置SSH主机名和SSH用户名中的字段,
而第二个块相当于 MySQL 主机名和用户名
- msql2 & ssh2(如https://medium.com/@devontem/nodejs-express-using-ssh-to-access-mysql-remotely-60372832dd08 所述)
在这个例子中插入凭据我首先得到了这些消息
(节点:6548)UnhandledPromiseRejectionWarning:空 (节点:6548)UnhandledPromiseRejectionWarning:未处理的承诺拒绝。此错误源于在没有 catch 块的情况下抛出异步函数内部,或拒绝未使用 .catch() 处理的承诺。 (拒绝编号:1) (节点:6548)[DEP0018] DeprecationWarning:不推荐使用未处理的承诺拒绝。将来,未处理的 Promise 拒绝将使用非零退出代码终止 Node.js 进程。等待几分钟后,程序以以下消息结束:
events.js:183
投掷者; // 未处理的“错误”事件
^
错误:读取 ECONNRESET
在 _errnoException (util.js:1022:11)
在 TCP.onread (net.js:628:25)
进程以退出代码 1 结束
与 mysql-ssh 相比,这里的凭证块的顺序似乎被切换了
【问题讨论】:
-
如果没有看到任何相关代码,我们真的无法帮助您...
-
我使用了我发布的链接中使用的代码。刚刚更换了所描述的凭据。请理解,我不想发布任何用户名、ips 或密码