Как подключиться к локальному серверу mariadb с помощью node.js - PullRequest
1 голос
/ 03 апреля 2019

Я пытаюсь подключиться к локальному серверу mariadb, используя node.js. Когда я пытаюсь подключиться, я получаю сообщение об ошибке:

"Ошибка: (conn = 8, no: 1045, SQLState: 28000) Доступ запрещен для пользователя 'root' @ 'localhost' (используется пароль: NO)"

Я не уверен, почему это так, так как у меня установлен пароль при подключении, и я могу войти на сервер mysql, используя пароль root с

 mysql -u root -p

Вот как выглядит мой код:

var mysql = require('mariadb');

var con = mysql.createConnection({
        host: "localhost",
        user: "root",
        password: "8pJcpe/h0h_%",
        port: 3306
        })
        .then(conn => {
                console.log("connected" + conn.threadId);
        })
        .catch(err => {
                console.log("got error " + err);
        });

Я также пробовал это с портом 3307, и получаю эту ошибку: "Ошибка: подключить ECONNREFUSED 127.0.0.1:3307"

Когда я пытаюсь использовать порт, который я использую для подключения ssh к серверу, я получаю следующую ошибку: «Ошибка: (conn = -1, no: 45009, SQLState: 08S01) сокет был неожиданно закрыт»

Я новичок в этом, и я мог бы использовать некоторую помощь. Спасибо.

Ответы [ 2 ]

0 голосов
/ 04 апреля 2019

Мне удалось это исправить.По какой-то причине при использовании mariadb он не узнает, что я предоставляю ему пароль.Поэтому мне пришлось переключиться на mysql и использовать его вместо этого, а затем я смог подключиться и запросить базу данных.

0 голосов
/ 03 апреля 2019

Некоторые ключевые идеи:

  • Пользователь MySQL идентифицируется пользователем и host.
  • В MySQL localhost означает подключение через локальный сокет, а не зацикливание TCP / IP.

Это:

mysql -u root -p

собирается использовать локальное сокетное соединение; это будет соответствовать строке таблицы mysql.user user='root' and host='localhost'

Для принудительного подключения TCP / IP:

mysql -h 127.0.0.1 -u root -p

Это будет соответствовать строке в mysql.user, такой как user='root' and host='127.0.0.1' или user='root' and host='%'

Каждая строка в mysql.user является отдельным пользователем; может быть несколько строк с user='root' и различными значениями host. Каждая из этих строк представляет отдельных пользователей, каждый со своими привилегиями и паролем (или методом аутентификации).


Для драйвера mariadb node.js

с использованием опции host мы попытаемся установить соединение TCP / IP.

Чтобы получить соединение через локальный файл сокета (то есть эквивалент mysql -u root -p, нам нужно использовать socketPath вместо host параметр.

https://mariadb.com/kb/en/library/nodejs-connection-options/


Если мы хотим, чтобы соединение TCP / IP работало в node.js, то сначала нужно убедиться, что соединение mysql -h 127.0.0.1 -u root -p работает.

...