Pré-requis :
si la sauvegarde se fait par un script lancé depuis un serveur distant assurez vous que votre pg_ident et / ou pg_hba soit correctement configuré
Suivant ce que votre base de données comprends : séquences, procédures stockées, fonctions faites vos grant selon :
- Pour les tables :
grant select on all tables in schema <votre_schéma> to <user_backup>;
- Pour les séquences :
grant select on all sequences in schema <votre_schéma> to <user_backup>;
- Pour les fonctions :
grant execute on all functions in schema <votre_schéma> to <user_backup>;
- Pour les procédures :
grant execute on all procedures in schema <votre_schéma> to <user_backup>;
Généralement dans 90% des cas <votre_schéma> est public
|
psql -p <port> -Atc "SELECT datname FROM pg_database WHERE datistemplate = false;" | \
while IFS= read -r db; do
[ -z "$db" ] && continue
echo "==> $db"
psql -p <port> -d "$db" <<EOF
GRANT USAGE ON SCHEMA <nom_schéma> TO <nom_utilisateur>;
GRANT SELECT ON ALL TABLES IN SCHEMA <nom_schéma> TO <nom_utilisateur>;
GRANT SELECT ON ALL SEQUENCES IN SCHEMA <nom_schéma> TO <nom_utilisateur>;
ALTER DEFAULT PRIVILEGES IN SCHEMA <nom_schéma> GRANT SELECT ON TABLES TO <nom_utilisateur>;
ALTER DEFAULT PRIVILEGES IN SCHEMA <nom_schéma> GRANT SELECT ON SEQUENCES TO <nom_utilisateur>;
EOF
done
|