PostgreSQL ERROR: permission denied for relation users
Problem
ERROR: permission denied for relation users
Error ini biasanya terjadi karena user database tidak memiliki hak akses (privileges) yang cukup terhadap tabel atau schema di PostgreSQL.
Solution
1. Menampilkan Nama Schema
Pertama, hubungkan ke database PostgreSQL Anda, lalu jalankan perintah berikut untuk melihat daftar tabel beserta schema-nya:
\dt
Dari output tersebut, Anda dapat mengetahui nama schema yang digunakan (biasanya public, tetapi bisa berbeda tergantung konfigurasi).
2. Memberikan Hak Akses (Grant Privileges)
Setelah mengetahui nama schema, jalankan perintah berikut sebagai user dengan hak admin (misalnya postgres):
GRANT ALL PRIVILEGES ON DATABASE name_db TO remote_user;
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA <schema_name> TO <username>;
GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA <schema_name> TO <username>;
Ganti:
name_db→ dengan nama database Anda<schema_name>→ dengan nama schema (misalnyapublic)<username>/remote_user→ dengan user yang ingin diberi akses
Catatan Tambahan (Opsional – Best Practice)
Agar tabel baru otomatis memiliki akses yang sama di masa depan, jalankan juga:
ALTER DEFAULT PRIVILEGES IN SCHEMA <schema_name>
GRANT ALL ON TABLES TO <username>;
Kesimpulan
Error ini terjadi karena kurangnya hak akses pada schema atau tabel. Solusinya adalah:
- Cek schema menggunakan
\dt - Berikan privilege pada database, tables, dan sequences
Semoga membantu 👍
Komentar