本页还没有译文
本页 17 段还没译成简体中文,下面显示的是英文原文。Remove Superuser Access from Studio
还没翻译译自英文(supabase.com)本页 17 段都还没译
Overview
In late 2022, Supabase introduced a security change in hosted projects that removed superuser access from the dashboard SQL editor and shifted ownership of user-created database objects away from supabase_admin toward the postgres role.
You can read more about it in the official announcement.
However, this migration was never automatically applied to self-hosted Supabase instances.
As a result:
- Objects created via the dashboard may still be owned by
supabase_admin - Behavior differs from the Supabase platform
- Some migrations may fail when run as
postgres
This guide explains how to align your self-hosted Supabase instance with the security enhancements and ownership model used on the Supabase platform.
Changing the configuration
Step 1: Update database object ownership
Use the provided script to reassign ownership of database objects in the public schema from supabase_admin to postgres. From the project directory containing docker-compose.yml, run:
sh utils/reassign-owner.shNote
This script only updates ownership for database objects in the public schema. Supabase-managed and custom schemas are not affected.
Step 2: Update environment variables in docker-compose.yml
-
In your
docker-compose.ymlconfiguration, uncomment the following line for thestudioservice to use thepostgresrole for read/write operations:studio: environment: POSTGRES_USER_READ_WRITE: postgres -
Locate the
metaservice environment variables and change thePG_META_DB_USERenvironment variable fromsupabase_admintopostgres:meta: environment: PG_META_DB_USER: postgres
Note
Studio uses its own credentials to access Postgres via postgres-meta, so this change is only needed for backward compatibility and consistency.
Step 3: Restart Supabase
sh run.sh recreateVerify roles
After restarting your services, verify that Supabase Studio is now using the postgres role. Run the following query in the Supabase Studio SQL Editor:
select current_user;
-- expected result: postgres