Доступ к MySQL-DB (на сервере plesk) через Node.js - PullRequest
0 голосов
/ 21 мая 2018

Я только что купил свой собственный домен, включая веб-хостинг на сервере plesk.К счастью, они также предоставляют базу данных MySQL.Доступ к БД через MySQL Workbench (локально) работает очень хорошо, когда я вставляю свои учетные данные (по какой-то причине единственный рабочий метод подключения - это «Стандартный TCP / IP через SSH» (и даже не требуется местоположение для частного ключа)), но я не смог найти способ заставить это работать с помощью node.js.(Я использую версию 8.11.1).

Я решил использовать node.js, так как я хочу сделать некоторые интерактивные визуализации данных с d3, и так как у меня есть почти 40000 точек данных, я бы хотел передать на аутсорсинг как можно больше процессов.сервер по возможности.

Конечно, я хочу попробовать все локально, а также на сервере.

В соответствии с методом подключения, который я использовал с верстаком, я подозреваю использовать некоторые ssh-модули (просто используя mysqlмодуль тоже не будет работать).На данный момент я попробовал это:

  1. 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 SSH Hostname и SSH Username, тогда как второй блок эквивалентен MySQL Hostname иИмя пользователя

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

1 Ответ

0 голосов
/ 23 мая 2018

Похоже, что mysql-ssh использует node-mysql2 под капотом, который в настоящее время не поддерживает новый подключаемый модуль аутентификации по умолчанию, используемый MySQL 8.0.

Дополнительные сведения доступны здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...