Skip to main content

Issue pg_dump tidak bisa melakukan backup menggunakan spesific User

 

Berikut rinican lengkapnya


Ringkasan: Mengizinkan postgresqladmin melakukan Backup (pg_dump) di Azure PostgreSQL

🎯 Tujuan

Memungkinkan user postgresqladmin untuk melakukan backup (pg_dump) terhadap:

  • hrtools_production (owner: odoo_hrtools)

  • main_production (owner: odoo_main)


🛠️ Langkah-langkah Penyelesaian

1. ✅ Gunakan koneksi SSL ke Azure PostgreSQL

Karena Azure PostgreSQL hanya menerima koneksi dengan SSL:

pg_dump \
  "host=psql-shared-stab-02.postgres.database.azure.com dbname=hrtools_production user=postgresqladmin sslmode=require sslrootcert=/etc/ssl/certs/Baltimore_CyberTrust_Root.pem" \
  | gzip > hrtools_production.sql.gz

2. ✅ Gunakan pg_dump versi ≥ server PostgreSQL

Versi pg_dump harus minimal sama dengan versi server PostgreSQL (contoh: versi 11.22).


3. ✅ Berikan akses dari pemilik objek (user: odoo_hrtools / odoo_main)

📌 Akses dasar:

GRANT CONNECT ON DATABASE hrtools_production TO postgresqladmin;
GRANT USAGE ON SCHEMA public TO postgresqladmin;

📌 Grant SELECT ke semua tabel:

GRANT SELECT ON ALL TABLES IN SCHEMA public TO postgresqladmin;
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON TABLES TO postgresqladmin;

📌 Grant USAGE dan SELECT ke semua sequence (💡 bagian penting yang menyelesaikan masalah!):

DO $$
DECLARE
    r RECORD;
BEGIN
    FOR r IN
        SELECT sequence_name
        FROM information_schema.sequences
        WHERE sequence_schema = 'public'
    LOOP
        EXECUTE format('GRANT USAGE, SELECT ON SEQUENCE public.%I TO postgresqladmin;', r.sequence_name);
    END LOOP;
END
$$;
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT USAGE, SELECT ON SEQUENCES TO postgresqladmin;

🎉 Hasil Akhir

  • postgresqladmin sekarang dapat melakukan pg_dump ke semua database yang relevan.

  • Tidak ada lagi error permission denied untuk table maupun sequence.

  • Backup dapat diotomasi (misalnya via cron, n8n, dsb).


Kalau kamu ingin saya bantu buatkan script otomatis untuk semua database (multi-schema sekalipun), tinggal beri tahu — saya bisa bantu buatkan batch-nya.