【问题标题】:Access MySQL-DB (on plesk server) via Node.js通过 Node.js 访问 MySQL-DB(在 plesk 服务器上)
【发布时间】:2018-10-31 05:40:06
【问题描述】:

我刚刚购买了自己的域,包括在 plesk 服务器上进行虚拟主机。 幸运的是,他们还提供了一个 MySQL 数据库。当我插入我的凭据时,通过 MySQL 工作台(本地)访问数据库工作得很好(由于某种原因,唯一有效的连接方法是“通过 SSH 的标准 TCP/IP”(它甚至不需要私钥的位置)) ,但我找不到使用 node.js 完成这项工作的方法。 (我使用的是 8.11.1 版本)。

我决定使用 node.js,因为我想用 d3 进行一些交互式数据可视化,而且我有将近 40000 个数据点,我想将尽可能多的进程外包给服务器。

当然我想在本地和服务器上尝试一切。

根据我在工作台上使用的连接方法,我怀疑使用了一些 ssh 模块(仅使用 mysql 模块也不起作用)。现在我尝试了这些:

  1. mysql-ssh (https://www.npmjs.com/package/mysql-ssh)

    将我的凭据(包括私钥)放入示例代码只会返回此错误:

事件.js:183 投掷者; // 未处理的“错误”事件 ^ 错误:所有配置的身份验证方法均失败 在 tryNextAuth (C:\Users\matth\git\soundstats_elak_titles\node_modules\ssh2\lib\client.js:380:17) 在 SSH2Stream.onUSERAUTH_FAILURE (C:\Users\matth\git\soundstats_elak_titles\node_modules\ssh2\lib\client.js:591:5) 在 emitTwo (events.js:126:13) 在 SSH2Stream.emit (events.js:214:7) 在 parsePacket (C:\Users\matth\git\soundstats_elak_titles\node_modules\ssh2-streams\lib\ssh.js:3929:10) 在 SSH2Stream._transform (C:\Users\matth\git\soundstats_elak_titles\node_modules\ssh2-streams\lib\ssh.js:669:13) 在 SSH2Stream.Transform._read (_stream_transform.js:186:10) 在 SSH2Stream._read (C:\Users\matth\git\soundstats_elak_titles\node_modules\ssh2-streams\lib\ssh.js:251:15) 在 SSH2Stream.Transform._write (_stream_transform.js:174:12) 在 doWrite (_stream_writable.js:397:12) 进程以退出代码 1 结束

从我的mysqlssh.connect中的第一个块中,相当于mysql工作台连接配置SSH主机名和SSH用户名中的字段, 而第二个块相当于 MySQL 主机名和用户名

  1. 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 或密码

标签: mysql node.js ssh plesk


【解决方案1】:

看起来 mysql-ssh 在后台使用 node-mysql2,目前不支持 MySQL 8.0 使用的新的默认身份验证插件。

更多详情请见here

【讨论】:

    猜你喜欢
    • 2017-05-19
    • 2016-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-15
    • 1970-01-01
    • 2017-08-07
    相关资源
    最近更新 更多