📚

NEXT.JS+MySQLのチュートリアルはMySQL8.0に接続できない話

2021/02/27に公開

背景

NEXT.JSを使ってMySQLに接続しようと見つけた下記のチュートリアルに少しハマったので備忘録
https://vercel.com/guides/deploying-next-and-mysql-with-vercel

内容

チュートリアル通りに実施していったが、npm run migrateで下記のエラーが発生してしまう。

could not run migration, double check your credentials.

scripts/migrate-db.js内の48行目で発生しているようなので、下記のように一部修正。

    console.error('could not run migration, double check your credentials.',e)

下記のエラーを確認した。

could not run migration, double check your credentials. Error: Error: ER_NOT_SUPPORTED_AUTH_MODE: Client does not support authentication protocol requested by server; consider upgrading MySQL client
    at query (/Users/hashito/git/docker/next.js/my-app/scripts/migrate-db.js:26:11)
    at processTicksAndRejections (internal/process/task_queues.js:97:5)
    at async migrate (/Users/hashito/git/docker/next.js/my-app/scripts/migrate-db.js:33:5)

このエラー構文で調べたところ、MySQL8.0では認証方法がmysql_native_passwordからcaching_sha2_passwordに変わったため、認証が出来なかった様子。

Mariadbに変えて上手く行った。
多分、mysql_native_passwordに認証方法を変えても上手くいくと思います。

Discussion