通过node.js访问mysql db(在plesk服务器上)

daupos2t  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(472)

我刚刚购买了我自己的域名,包括plesk服务器上的网络主机。幸运的是,它们还提供了一个mysql数据库。当我插入凭据时,通过mysql工作台(本地)访问db就可以了(出于某种原因,唯一有效的连接方法是“standard tcp/ip over ssh”(它甚至不需要私有密钥的位置)),但是我找不到使用node.js的方法来实现这一点(我使用的是8.11.1版)。
我决定使用node.js,因为我想用d3实现一些交互式数据可视化,而且因为我有将近40000个数据点,所以我想把尽可能多的进程外包给服务器。
当然,我想在本地和服务器上尝试一切。
根据我在工作台上使用的连接方法,我怀疑使用了一些ssh模块(仅仅使用mysql模块也不起作用)。现在我试过这些:
mysql ssh(https://www.npmjs.com/package/mysql-ssh)
只需将我的凭据(包括私钥)放入示例代码中,就会返回以下错误:

events.js:183
      throw er; // Unhandled 'error' event
      ^

Error: All configured authentication methods failed
    at tryNextAuth (C:\Users\matth\git\soundstats_elak_titles\node_modules\ssh2\lib\client.js:380:17)
    at SSH2Stream.onUSERAUTH_FAILURE (C:\Users\matth\git\soundstats_elak_titles\node_modules\ssh2\lib\client.js:591:5)
    at emitTwo (events.js:126:13)
    at SSH2Stream.emit (events.js:214:7)
    at parsePacket (C:\Users\matth\git\soundstats_elak_titles\node_modules\ssh2-streams\lib\ssh.js:3929:10)
    at SSH2Stream._transform (C:\Users\matth\git\soundstats_elak_titles\node_modules\ssh2-streams\lib\ssh.js:669:13)
    at SSH2Stream.Transform._read (_stream_transform.js:186:10)
    at SSH2Stream._read (C:\Users\matth\git\soundstats_elak_titles\node_modules\ssh2-streams\lib\ssh.js:251:15)
    at SSH2Stream.Transform._write (_stream_transform.js:174:12)
    at doWrite (_stream_writable.js:397:12)

Process finished with exit code 1

从我的第一个街区开始 mysqlssh.connect 相当于mysql workbench connection configurations中的字段ssh hostname和ssh username,而第二个块相当于mysql hostname和username
msql2和ssh2(如第https://medium.com/@devontem/nodejs-express-using-ssh-to-access-mysql-remotely-60372832dd08)
在这个示例中插入凭据我首先得到了以下消息

(node:6548) UnhandledPromiseRejectionWarning: null
(node:6548) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 1)
(node:6548) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.

等待几分钟后,程序以以下消息结束:

events.js:183
      throw er; // Unhandled 'error' event
      ^

Error: read ECONNRESET
    at _errnoException (util.js:1022:11)
    at TCP.onread (net.js:628:25)

Process finished with exit code 1

与mysql ssh相比,这里凭证块的顺序似乎是切换的

72qzrwbm

72qzrwbm1#

看起来mysql ssh使用node-mysql2,而node-mysql2目前不支持mysql 8.0使用的新默认身份验证插件。
更多详情请参见此处。

相关问题