search
LoginSignup
54
Help us understand the problem. What are the problem?

More than 3 years have passed since last update.

posted at

updated at

Node.jsでMySQL 8.0へ接続しようとする時に発生するエラー

事象

Node.jsでMySQL 8.0へ接続しようとする時に、以下のエラーでちょっとハマりました。
クライアントツールでは問題なくSQLを実行できるのに、Node.jsからはエラーが発生してしまいました。

ER_NOT_SUPPORTED_AUTH_MODE: Client does not support authentication protocol requested by server; consider upgrading MySQL client

環境

 OS: Windows 10 Home 64bit
 DB: MySQL Server 8.0 Community Edition
 node: v10.14.2
 npm: 6.4.1
 mysql: 2.16.0

原因・解決策

MySQL8.0でパスワードの認証形式が変更されているが、
Node.jsの「mysql」にはまだ実装されていないことが原因でした。

認証方法を「mysql_native_password」に変更することで、
この問題は解決できました。

以下のSQLを実行することで認証方法を変更することが出来ます。
ユーザー名とパスワードは各自の環境に置き換えてください。

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

参考になったサイト
stackoverflow.com

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
54
Help us understand the problem. What are the problem?