auth/docs/getting-started/FIX_DATABASE_PERMISSIONS.md

1.9 KiB

Fix Database Permissions Error

Problem

You're getting this error:

error: permission denied for schema public
code: '42501'

This happens because the read_write_user doesn't have CREATE permission on the public schema.

Solution

You need to grant permissions using a database admin/superuser account. The read_write_user cannot grant permissions to itself.

  1. Get admin database credentials from your AWS RDS console or database administrator

    • You need a user with superuser privileges or the schema owner
  2. Add to your .env file:

    ADMIN_DATABASE_URL=postgresql://admin_user:admin_password@db.livingai.app:5432/livingai_test_db
    
  3. Run the setup script:

    npm run setup-db
    

Option 2: Manual SQL (If you have database access)

Connect to your database using any PostgreSQL client (psql, pgAdmin, DBeaver, etc.) as an admin user and run:

GRANT USAGE ON SCHEMA public TO read_write_user;
GRANT CREATE ON SCHEMA public TO read_write_user;
CREATE EXTENSION IF NOT EXISTS "uuid-ossp";

Option 3: AWS RDS Console

If you're using AWS RDS:

  1. Go to AWS RDS Console
  2. Find your database instance
  3. Use "Query Editor" or connect via psql with master credentials
  4. Run the SQL commands from Option 2

Verification

After running the fix, verify permissions:

SELECT 
  has_schema_privilege('read_write_user', 'public', 'USAGE') as has_usage,
  has_schema_privilege('read_write_user', 'public', 'CREATE') as has_create;

Both should return true.

Why This Happens

  • PostgreSQL doesn't allow users to grant permissions to themselves
  • The read_write_user needs CREATE permission to create tables (like otp_codes)
  • Only a superuser or schema owner can grant these permissions

After Fixing

  1. Restart your application
  2. Try creating an OTP - it should work now