Давайте сначала проясним, что происходит.
MySQL 8 поддерживает подключаемые методы аутентификации. По умолчанию используется один из них с именем caching_sha2_password
, а не наш старый добрый mysql_native_password
( source ). Должно быть очевидно, что использование криптоалгоритма с несколькими рукопожатиями является более безопасным, чем простая передача пароля, которая существовала в течение 24 лет !
Теперь проблема в mysqljs
в Node (пакет, который вы устанавливаете с npm i mysql
и используете его в своем коде Node), пока не поддерживает этот новый метод аутентификации по умолчанию в MySQL 8. Проблема находится здесь: https://github.com/mysqljs/mysql/issues/1507 и по-прежнему открыта, через 3 года, по состоянию на июль 2019 года. (ОБНОВЛЕНИЕ июнь 2019: в mysqljs теперь исправляется новый PR это!)
Ваши варианты
Вариант 1) Понизьте версию «MySQL» для аутентификации, используя старый добрый «native_password»
Это то, что все предлагают здесь (например, верхний ответ выше ). Вы просто входите в mysql
и запускаете запрос о том, что root
нормально, используя старый метод native_password
для аутентификации:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password ...
Хорошо, что жизнь будет простой, и вы все еще можете использовать старые добрые инструменты, такие как Sequel Pro, без каких-либо проблем . Но проблема в том, что вы не используете более безопасные (и крутые, читайте ниже) материалы, доступные вам.
Вариант 2) Заменить пакет "Node" на MySQL Connecter X DevAPI
MySQL X DevAPI для узла является заменой пакета Node's Mysqljs , предоставленного http://dev.mysql.com официальными парнями.
Работает как брелок, поддерживающий caching_sha2_password
аутентификацию. (Просто убедитесь, что вы используете порт 33060
для X протокола обмена .)
Плохо то, что вы оставили наш старый пакет mysql
, к которому все так привыкли и на который полагаются.
Хорошо, что ваше приложение теперь более защищено, и вы можете воспользоваться кучей новых вещей, которые не давали наши старые добрые друзья! Просто ознакомьтесь с руководством по для X DevAPI , и вы увидите, что в нем есть масса новых сексуальных функций, которые могут пригодиться. Вам просто нужно заплатить цену обучения, которая, как ожидается, идет с любым обновлением технологии. :)
PS. К сожалению, этот пакет XDevAPI еще не имеет определения типов (что понятно с помощью TypeScript), поэтому, если вы используете typcript , у вас будут проблемы. Я пытался сгенерировать .d.ts, используя dts-gen
и dtsmake
, но безуспешно. Так что имейте это в виду.
Ура!