Почему мой код Node.js работает, когда xampp работает mysql, а не когда mysql notifier имеет запущенный сервер mysql? - PullRequest
0 голосов
/ 01 июня 2018

Я новичок в использовании node.js и mysql, у меня есть простой скрипт, который использует node для входа на сервер mysql.

var mysql = require('mysql');
var connection = mysql.createConnection({
  host     : 'localhost',
  user     : 'root',
  password : ''
});
connection.connect(function(err) 
{
  if (!err)
    console.log('Connected');
  else
    console.log('Error connection');
    console.log(err);
});

Когда мой сервер xampp mysql работает, он возвращается подключенным, однако, когда xampp выключен и запущен уведомитель сервера mysql, он возвращает эту ошибку.

" код:'ER_NOT_SUPPORTED_AUTH_MODE', errno: 1251, sqlMessage: 'Клиент не поддерживает протокол аутентификации, запрошенный сервером; рассмотрите возможность обновления клиента MySQL', sqlState: '08004', fatal: true}"Я использовал установщик для окон, найденных вMySQL сайт.Я использую Windows 10, и она установлена ​​прямо на диск C моего компьютера.

Ответы [ 3 ]

0 голосов
/ 01 июня 2018

Я не знал, что такое MySQL Notifier, поэтому я искал в Google.В соответствии с документацией, которую я нашел здесь (www.mysql.com) , MySQL Notifier только уведомляет об изменениях в вашей системе и подключении к вашему MySQL серверу.

Это означает, что эта утилита не сервер MySQL, вы не можете использовать его, как это было.Вам нужен работающий сервер MySQL (запущенный xamp).

Существует множество способов запустить сервер MySQL без xamp:

В любом случае, версия вашего сервера не соответствует версии вашего клиента, которая здесь у вас mysql Библиотека Node.js.Две версии работают друг с другом, но метод аутентификации, похоже, изменился.

Какую версию вы используете?Вы пытались обновить его?npm update mysql

Лучшее решение может быть здесь: Существует закрытая проблема на эту тему в mysqljs GitHub репозитории , где Андрей Сидоров советует

позволяет использовать небезопасную аутентификацию: https://github.com/mysqljs/mysql#connection-options insecureAuth опция.

Источник: https://github.com/mysqljs/mysql/issues/1574

Описание опции:

  • insecureAuth: разрешить подключение к экземплярам MySQL, которые запрашивают старый (небезопасный) метод аутентификации.(По умолчанию: false)

https://github.com/mysqljs/mysql#connection-options

Вы можете попробовать установить этот параметр на true:

var connection = mysql.createConnection({
  host     : 'localhost',
  user     : 'root',
  password : '',
  insecureAuth: true
});

Немного«xamp» означает «LinuX Apache MySQL PHP» (поэтому вы используете «wamp» -> «Windows Apache MySQL PHP»).

0 голосов
/ 03 июня 2018

Если вы используете MySQL 8.0, то вы, вероятно, столкнулись с той же проблемой (и сможете решить ее с помощью того же решения), описанной здесь .

0 голосов
/ 01 июня 2018

вы можете попробовать, выполнив следующую команду:

use mysql;
update user set authentication_string=password(''), plugin='mysql_native_password' where user='root';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...