【Prisma】migrate devが「could not create the shadow database」とエラーになる

Error: P3014
Prisma Migrate could not create the shadow database. Please make sure the database user has permission to create databases. Read more about the shadow database (and workarounds) at https://pris.ly/d/migrate-shadow
Original error: Error code: P1010
User `user` was denied access on the database `mydb`

Prismaでnpx prisma migrate devしようとすると、上記のエラーになった。

前提

version: '3.8'
services:
db:
container_name: db-container
image: mysql:5.7
environment:
MYSQL_DATABASE: mydb
MYSQL_ROOT_PASSWORD: root_pw
MYSQL_USER: user
MYSQL_PASSWORD: user_pw
ports:
- '3306:3306'

上記docker-compose.ymlの設定でMySQLのコンテナを立てており、userユーザーでDBに接続しマイグレーションを実行しようとした。

解決法

Terminal window
mysql -u user -p
grant CREATE, ALTER, DROP, REFERENCES ON *.* to 'user'@'%';

対象ユーザーにCREATE, ALTER, DROP, REFERENCESの権限を付与する。これでマイグレーションが成功した。

公式ドキュメントにもある通り、マイグレーションでshadow databaseを作成する関係上、上記の権限が必要になるらしい。(そのためroleユーザーで接続していれば今回のエラーにはならない)