MySQL 8.0 verwendet ein neues Standard-Authentifizierungs-Plugin - caching_sha2_password - während MySQL 5.7 ein anderes verwendete - mysql_native_password . Derzeit unterstützen die Community-Node.js-Treiber für MySQL keine kompatiblen clientseitigen Authentifizierungsmechanismen für das neue Server-Plugin.
Eine mögliche Problemumgehung besteht darin, den Typ des Benutzerkontos so zu ändern, dass das alte Authentifizierungs-Plugin verwendet wird:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'MyNewPass';
Oder erstellen Sie ein anderes, das dasselbe Plugin verwendet:
CREATE USER 'foo'@'localhost' IDENTIFIED WITH mysql_native_password BY 'bar';
Es gibt einen Pull Request in Pipeline, um das Problem richtig anzugehen.
Eine weitere Option ist die Verwendung des official MySQL Node.js-Connector (vollständige Offenlegung:Ich bin der leitende Entwickler), der auf X-Protokoll und unterstützt bereits den neuen Authentifizierungsmodus.