PostgreSQLERROR 42501

PostgreSQL: Permission Denied for Table

PostgreSQL 42501 is thrown when the current role lacks the required privilege (SELECT, INSERT, UPDATE, DELETE) on the target table. PostgreSQL has a fine-grained privilege system per object.

Example Query

-- Connecting as 'app_user':
SELECT * FROM admin_logs;
-- app_user has no SELECT privilege on admin_logs

Common Causes

  1. 1The database role has not been granted the required privilege
  2. 2Table was created by a different owner and privileges were not set
  3. 3Row-level security policy denies access for the current role

How to Fix It

Run GRANT SELECT ON table_name TO role_name; as a superuser. For all tables in a schema use GRANT SELECT ON ALL TABLES IN SCHEMA public TO role_name;. Check RLS policies with SELECT * FROM pg_policies;.

Need a reliable database?

Try Supabase — free PostgreSQL with a generous free tier. No credit card required.

Get started free →

Got a query causing this error?

Paste it into SQLbuddy and get an instant plain-English explanation with optimization tips.

Analyze My Query →