Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
49
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

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

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
49
Help us understand the problem. What are the problem?