#事象
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