Как получить доступ к MariaDB с NodeJS в Windows - PullRequest
2 голосов
/ 05 июня 2019

Я только что скачал MariaDB 10.3 для Windows, создал базу данных и пытался подключиться с сервера NodeJS с использованием библиотеки mysql.

var mysql = require('mysql');
var con = mysql.createConnection({
  host: "localhost", 
  user: "root",
  password: "MariaDBPass",
  database:'DB_NAME',
});

con.connect(function(err) {
  if (err) throw err;
  console.log("Connected!");
  con.query(sql, function (err, result) {
    if (err) throw err;
    console.log("Result: " + result);
  });
});

Iпробовал на Ubuntu и он работает, но на windows выдает ошибку не-sql:

Client does not support authentication protocol requested by server; consider upgrading MariaDB client

У меня красный, что, возможно, это несовместимость междуMySQL 8.0 и библиотека (mysql).Я уже пытался изменить пользователя следующим образом:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password'

, но он сказал, что

есть ошибка синтаксиса SQL

Любойидеи как это решить?

1 Ответ

0 голосов
/ 05 июня 2019

Не знаю, насколько это будет полезно, но я использую следующую настройку:

  • MariaDB 10,3 (x64)
  • Windows 10 Pro (сборка 17763)
  • mysql module v2.16.0.
  • Node.js v10.15.1

Следующий код работает, как и ожидалось, для меня:

var mysql = require('mysql');
var con = mysql.createConnection({
    host: "localhost", 
    user: "some_user",
    password: "some_password",
    database: 'testdb'
});

let sql = "select * from test_table";

con.connect(function(err) {
    if (err) throw err;
    console.log("Connected!");
    con.query(sql, function (err, result) {
        if (err) throw err;
        console.log("Result: " + JSON.stringify(result));
    });
});

Я получаювывод вроде:

[{"id":1,"name":"Mike Smith"},{"id":2,"name":"Joe Brown"}]

Чтобы создать пользователя, которого я сделал (используя MariaDB mysql.exe, используя пользователя root):

use testdb;

create user 'some_user'@'localhost' identified by 'some_password';

grant all privileges on testdb.* to 'some_user'@'localhost';

Это может быть немного допустимо, но это нормальнодля проверки соединений.

Я также могу соединиться с пользователем root.

Если вы хотите установить пароль пользователя root, попробуйте:

use mysql;

update user set password=PASSWORD('password') where user='root'and host='localhost';

flush privileges;

Я создал простойdb 'testdb' и таблица 'test_table' с парой строк, которые будут использоваться для запросов.

Я бы посоветовал обновить версию модуля mysql, если вы можете.Также, возможно, посмотрите на версию Node.js.

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