ER_NOT_SUPPORTED_AUTH_MODE - сервер MySQL

У меня установлена база данных MySQL. Когда я пытаюсь получить к нему доступ через мой Node JS-сервер, я получаю ошибку

"ER_NOT_SUPPORTED_AUTH_MODE: клиент не поддерживает протокол проверки подлинности, запрошенный сервером, рассмотрите возможность обновления клиента MariaDB"

что странно, так как я уже удалил MariaDB и установил MySQL с помощью Homebrew.

Это моя попытка подключения:

var mysql = require('mysql');

var connection = mysql.createConnection({
  host     : 'localhost',
  user     : 'root',
  password : '********',
  database : 'vod_bill_database'
}); 

Есть идеи? благодаря

Ответ 1

Я полагал, что в некоторых версиях MySQL у них есть аутентификация для установления соединения, которое немного испортилось. Все, что мне нужно было сделать, это добавить строку "insecureAuth: true" к моей попытке подключения.

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

Сейчас он работает нормально.

Ответ 2

На данный момент версия 8.0 - это способ изменения плагина. Используйте этот пример:

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

Ответ 3

enter image description here

Переконфигурируйте метод аутентификации, там вы выбираете поддержку пароля устаревшего типа для 5.1

Причина ошибки

* Вы установили последний Mysql 8.0, у него есть другой метод аутентификации. унижение 5.6 или 5.1 - простое решение

Ответ 4

попробуйте более старую версию mysql, например 5.6.40, она использует по умолчанию SHA256_password auth, где новая версия 8.0. использует по умолчанию sha2_password auth, который более безопасен и передает эту ошибку протокола проверки подлинности. Установщик MYSQL 5.6.40

Ответ 5

var connection = mysql.createConnection({
  host     : 'localhost',
  user     : 'root',
  password : '********',
  database : 'vod_bill_database',
  port : 3308 
}); 

У меня была такая же ошибка, и с тех пор, как я изменил свой порт в phpmyadmin с 3306 до 3308, поэтому здесь мне также пришлось написать порт: 3308, и он начал работать.

Ответ 6

Я последовал за решением. Я добавляю команду: insecureAuth: true Но я не сильно изменился.

Ответ 7

Благодаря @Vinayak Shedgeri, я решил ошибку с переконфигурированием шагов "MySQL Server" с помощью "MySQL Installer". шаги с "MySQL Installer

Ответ 8

чтобы преодолеть эту ошибку, используйте следующий код:

var connectionString = 'mysql://*root:*[email protected]*localhost/*database?charset=utf8_general_ci&timezone=-0700'; 
var connection= mysql.createConnection(connectionString); 

но убедитесь, что вы изменили метки * в connectionString в зависимости от ваших настроек.

Ответ 9

Спасибо @Vinayak Shedgeri это работает нормально