4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

FoundingBaseAdvent Calendar 2024

Day 2

Supabase 内の PostgreSQL を Prisma で reset した後に実行する SQL

Last updated at Posted at 2024-12-01

はじめに

Supabase 内の PostgreSQL に対して npx prisma migrate reset 等でデータベースを作成したのち、
@supabase/supabase-js 等でデータアクセスすると permission denied for schema public のエラーが返却される場合ことあります。

Prisma でスキーマを管理している場合、@supabase/supabase-jsでアクセスすることは本来ありませんが、検証のため実行したところエラーとなったので実行できるように修正する方法をまとめた。

実行する SQL

Supabase のドキュメントには、 public 以外のスキーマを利用する方法が記載されています。

下記ドキュメントには新たに、 myschema を作成した場合を例に記載されているので myschemapiblic に置き換えて実行すれば OK です。

Using Custom Schemas | Supabase Docs

GRANT USAGE ON SCHEMA "public" TO anon, authenticated, service_role;
GRANT ALL ON ALL TABLES IN SCHEMA "public TO anon, authenticated, service_role;
GRANT ALL ON ALL ROUTINES IN SCHEMA "public TO anon, authenticated, service_role;
GRANT ALL ON ALL SEQUENCES IN SCHEMA "public TO anon, authenticated, service_role;
ALTER DEFAULT PRIVILEGES FOR ROLE postgres IN SCHEMA "public" GRANT ALL ON TABLES TO anon, authenticated, service_role;
ALTER DEFAULT PRIVILEGES FOR ROLE postgres IN SCHEMA "public" GRANT ALL ON ROUTINES TO anon, authenticated, service_role;
ALTER DEFAULT PRIVILEGES FOR ROLE postgres IN SCHEMA "public" GRANT ALL ON SEQUENCES TO anon, authenticated, service_role;

手っ取り早く実行したいなら以下2SQLだけでも可能です。

GRANT USAGE ON SCHEMA "public" TO authenticated, anon, service_role;
GRANT SELECT, INSERT, UPDATE ON ALL TABLES IN SCHEMA "public" TO authenticated, anon, service_role;

Ref

4
1
0

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
  3. You can use dark theme
What you can do with signing up
4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?