mirror of
https://github.com/postgres/postgres.git
synced 2025-07-14 08:21:07 +03:00
Added pg_dumpaccounts utility script in contrib.
Derived from pg_dumpall it just dumps the pg_shadow and pg_group contents. Jan
This commit is contained in:
21
contrib/pg_dumpaccounts/Makefile
Normal file
21
contrib/pg_dumpaccounts/Makefile
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
#-------------------------------------------------------------------------
|
||||||
|
#
|
||||||
|
# Makefile --
|
||||||
|
#
|
||||||
|
# Makefile for contrib pg_dumpaccounts.
|
||||||
|
#
|
||||||
|
#-------------------------------------------------------------------------
|
||||||
|
|
||||||
|
PGDIR = ../..
|
||||||
|
SRCDIR = $(PGDIR)/src
|
||||||
|
|
||||||
|
include $(SRCDIR)/Makefile.global
|
||||||
|
|
||||||
|
all:
|
||||||
|
|
||||||
|
install:
|
||||||
|
$(INSTALL) $(INSTL_EXE_OPTS) pg_dumpaccounts $(BINDIR)/pg_dumpaccounts
|
||||||
|
|
||||||
|
clean:
|
||||||
|
|
||||||
|
distclean: clean
|
9
contrib/pg_dumpaccounts/README
Normal file
9
contrib/pg_dumpaccounts/README
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
pg_dumpaccounts
|
||||||
|
|
||||||
|
This is a little utility script derived from pg_dumpall. It just
|
||||||
|
dumps the global pg_shadow and pg_group as pg_dumpall does without
|
||||||
|
dumping any of the databases. This is useful for installations
|
||||||
|
that have many databases with different backup schedules, where
|
||||||
|
pg_dumpall will never be run and thus, the users and groups will
|
||||||
|
never be backed up.
|
||||||
|
|
65
contrib/pg_dumpaccounts/pg_dumpaccounts
Normal file
65
contrib/pg_dumpaccounts/pg_dumpaccounts
Normal file
@ -0,0 +1,65 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
#
|
||||||
|
# pg_dumpaccounts
|
||||||
|
# dumps the pg_shadow and pg_group tables, which belong to the
|
||||||
|
# whole installation rather than any one individual database.
|
||||||
|
#
|
||||||
|
# $Header: /cvsroot/pgsql/contrib/pg_dumpaccounts/Attic/pg_dumpaccounts,v 1.1.2.1 2000/11/02 18:09:49 wieck Exp $
|
||||||
|
#
|
||||||
|
# to adapt to System V vs. BSD 'echo'
|
||||||
|
if echo '\\' | grep '\\\\' >/dev/null 2>&1
|
||||||
|
then
|
||||||
|
BS='\' # BSD
|
||||||
|
else
|
||||||
|
BS='\\' # System V
|
||||||
|
fi
|
||||||
|
#
|
||||||
|
# Dump everyone but the postgres user
|
||||||
|
# initdb creates him
|
||||||
|
#
|
||||||
|
# get the postgres user id
|
||||||
|
#
|
||||||
|
POSTGRES_SUPER_USER_ID="`echo \" \
|
||||||
|
select datdba \
|
||||||
|
from pg_database \
|
||||||
|
where datname = 'template1'; \" | \
|
||||||
|
psql -A -q -t template1`"
|
||||||
|
echo "${BS}connect template1"
|
||||||
|
#
|
||||||
|
# delete all users in case they run this twice
|
||||||
|
#
|
||||||
|
# we don't use POSTGRES_SUPER_USER_ID because the postgres super user id
|
||||||
|
# could be different on the two installations
|
||||||
|
#
|
||||||
|
echo "select datdba into table tmp_pg_shadow \
|
||||||
|
from pg_database where datname = 'template1';"
|
||||||
|
echo "delete from pg_shadow where usesysid <> tmp_pg_shadow.datdba;"
|
||||||
|
echo "drop table tmp_pg_shadow;"
|
||||||
|
#
|
||||||
|
# load all the non-postgres users
|
||||||
|
# XXX this breaks badly if the layout of pg_shadow ever changes.
|
||||||
|
# It'd be better to convert the data into CREATE USER commands.
|
||||||
|
#
|
||||||
|
echo "copy pg_shadow from stdin;"
|
||||||
|
psql -q template1 <<END
|
||||||
|
select pg_shadow.*
|
||||||
|
into table tmp_pg_shadow
|
||||||
|
from pg_shadow
|
||||||
|
where usesysid <> $POSTGRES_SUPER_USER_ID;
|
||||||
|
copy tmp_pg_shadow to stdout;
|
||||||
|
drop table tmp_pg_shadow;
|
||||||
|
END
|
||||||
|
echo "${BS}."
|
||||||
|
#
|
||||||
|
# copy the pg_group table too
|
||||||
|
# XXX this breaks badly if the layout of pg_group ever changes.
|
||||||
|
# It'd be better to convert the data into CREATE GROUP commands.
|
||||||
|
#
|
||||||
|
echo "delete from pg_group;"
|
||||||
|
echo "copy pg_group from stdin;"
|
||||||
|
psql -q template1 <<END
|
||||||
|
copy pg_group to stdout;
|
||||||
|
END
|
||||||
|
echo "${BS}."
|
||||||
|
|
||||||
|
exit 0
|
Reference in New Issue
Block a user