What's Changing?#
The week of June 15, 2026, the default docker-compose.yml in self-hosted Supabase will switch the database role used by Studio and postgres-meta from supabase_admin to postgres:
studio.environment.POSTGRES_USER_READ_WRITEwill default topostgresmeta.environment.PG_META_DB_USERwill default topostgres
This aligns self-hosted Supabase with the platform behavior introduced in late 2022, which removed superuser access from the dashboard SQL editor and shifted ownership of user-created objects to postgres. Self-hosted has been running with the legacy behavior until now.
⚠️ Existing instances that pull this change need to run a one-time ownership migration script for the public schema, or new operations from Studio may fail on objects still owned by supabase_admin.
Why?#
- Self-hosted has been three-plus years behind the platform on this. Behavior between deployment models should be consistent.
- The
postgresrole is non-superuser, so this reduces the privilege surface used by Studio's day-to-day operations. - Migrations and scripts that work on the platform may currently fail on self-hosted because of the ownership mismatch - this closes that gap.
Am I Affected?#
You are affected if all of the following are true:
- You run self-hosted Supabase from the
./dockerdirectory - You pull updates from
masterwithout overridingPOSTGRES_USER_READ_WRITEorPG_META_DB_USER - You have an existing instance with database objects created via Studio (which would currently be owned by
supabase_admin)
You are not affected if you:
- Use the Supabase platform - this has been the default since 2022
- Use the Supabase CLI for local development (
supabase start) - it's a different deployment option - Are starting a fresh self-hosted deployment - objects created via Studio will be owned by
postgresfrom the start
What Should I Do?#
If you have an existing self-hosted Supabase instance, follow the Remove superuser access guide:
- Run the included script to reassign ownership of objects in the
publicschema fromsupabase_admintopostgres:_10sh utils/reassign-owner.sh - Pull the new
docker-compose.yml(or manually setPOSTGRES_USER_READ_WRITE: postgresandPG_META_DB_USER: postgresif you maintain a customized compose file) - Restart the stack
- Verify in the Studio SQL editor that
select current_user;returnspostgres
The script only touches the public schema. Supabase-managed schemas (auth, storage, realtime, etc.) and any custom schemas you've created are left intact. If you have objects in custom schemas that you want migrated, you'll need to reassign their ownership manually.
If you'd rather defer this for now, set POSTGRES_USER_READ_WRITE and PG_META_DB_USER back to supabase_admin in your override file. This is a default change, not a removal - but we recommend completing the migration soon to stay aligned with platform behavior.
Rollout#
| Date | Change |
|---|---|
| 2026-04-27 | Migration guide published in self-hosting docs |
| 2026-05-18 | This changelog published |
| 2026-06-17 | Default flips in the next self-hosted Supabase release |