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 SELECT ON public.account_account TO postgresqladmin;
GRANT CONNECT ON DATABASE hrtools_production TO postgresqladmin;
GRANT USAGE ON SCHEMA public TO postgresqladmin;
📌 Grant USAGE dan SELECT ke semua sequence (💡 bagian penting yang menyelesaikan masalah!):
DO $$
DECLARE
r RECORD;
BEGIN
FOR r IN
SELECT tablename
FROM pg_tables
WHERE schemaname = 'public'
LOOP
EXECUTE format('GRANT SELECT ON public.%I TO postgresqladmin;', r.tablename);
END LOOP;
END
$$;
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 melakukanpg_dump
ke semua database yang relevan. -
Tidak ada lagi error
permission denied
untuk table maupun sequence. -
Backup dapat diotomasi (misalnya via cron, n8n, dsb).
No Comments