diff options
Diffstat (limited to 'src/bin/destroyuser/destroyuser.sh')
-rw-r--r-- | src/bin/destroyuser/destroyuser.sh | 196 |
1 files changed, 0 insertions, 196 deletions
diff --git a/src/bin/destroyuser/destroyuser.sh b/src/bin/destroyuser/destroyuser.sh deleted file mode 100644 index 135fff181fe..00000000000 --- a/src/bin/destroyuser/destroyuser.sh +++ /dev/null @@ -1,196 +0,0 @@ -#!/bin/sh -#------------------------------------------------------------------------- -# -# destroyuser.sh-- -# utility for destroying a user from the POSTGRES database. -# -# Copyright (c) 1994, Regents of the University of California -# -# -# IDENTIFICATION -# $Header: /cvsroot/pgsql/src/bin/destroyuser/Attic/destroyuser.sh,v 1.11 1999/03/14 16:00:55 momjian Exp $ -# -# Note - this should NOT be setuid. -# -#------------------------------------------------------------------------- - -CMDNAME=`basename $0` - -if [ -z "$USER" ]; then - if [ -z "$LOGNAME" ]; then - if [ -z "`whoami`" ]; then - echo "$CMDNAME: cannot determine user name" - exit 1 - fi - else - USER=$LOGNAME - export USER - fi -fi - -while (test -n "$1") -do - case $1 in - -a) AUTHSYS=$2; shift;; - -h) PGHOST=$2; shift;; - -p) PGPORT=$2; shift;; - *) DELUSER=$1;; - esac - shift; -done - -if [ -z "$AUTHSYS" ]; then - AUTHOPT="" -else - AUTHOPT="-a $AUTHSYS" -fi - -if [ -z "$PGHOST" ]; then - PGHOSTOPT="" -else - PGHOSTOPT="-h $PGHOST" -fi - -if [ -z "$PGPORT" ]; then - PGPORTOPT="" -else - PGPORTOPT="-p $PGPORT" -fi - -PARGS="-tq $AUTHOPT $PGHOSTOPT $PGPORTOPT" - -# -# generate the first part of the actual monitor command -# -PSQL="psql $PARGS" - - -# -# see if user $USER is allowed to create new users. Only a user who can -# create users can delete them. -# - -QUERY="select usesuper from pg_user where usename = '$USER'" -ADDUSER=`$PSQL -c "$QUERY" template1` - -if [ $? -ne 0 ] -then - echo "$CMDNAME: database access failed." - exit 1 -fi - -if [ x$ADDUSER != xt ] -then - echo "$CMDNAME: $USER cannot delete users." - exit 1 -fi - -# -# get the user name of the user to delete. Make sure it exists. -# - -if [ -z "$DELUSER" ] -then - echo PG_OPT_DASH_N_PARAM "Enter name of user to delete ---> PG_OPT_BACKSLASH_C_PARAM" - read DELUSER -fi - -QUERY="select usesysid from pg_user where usename = '$DELUSER'" - -RES=`$PSQL -c "$QUERY" template1` - -if [ $? -ne 0 ] -then - echo "$CMDNAME: database access failed." - exit 1 -fi - -if [ ! -n "$RES" ] -then - echo "$CMDNAME: user "\"$DELUSER\"" does not exist." - exit 1 -fi - -SYSID=`echo $RES | sed 's/ //g'` - -# -# destroy the databases owned by the deleted user. First, use this query -# to find out what they are. -# - -QUERY="select datname from pg_database where datdba = '$SYSID'::oid" - - -ALLDBS=`$PSQL -c "$QUERY" template1` - -if [ $? -ne 0 ] -then - echo "$CMDNAME: database access failed - exiting..." - exit 1 -fi - - -# -# don't try to delete template1! -# - -for i in $ALLDBS -do - if [ $i != "template1" ] - then - DBLIST="$DBLIST $i" - fi -done - -if [ -n "$DBLIST" ] -then - echo "User $DELUSER owned the following databases:" - echo $DBLIST - echo - -# -# Now we warn the DBA that deleting this user will destroy a bunch of databases -# - - yn=f - while [ "$yn" != y -a "$yn" != n ] - do - echo PG_OPT_DASH_N_PARAM "Deleting user $DELUSER will destroy them. Continue (y/n)? PG_OPT_BACKSLASH_C_PARAM" - read yn - done - - if [ $yn = n ] - then - echo "$CMDNAME: exiting" - exit 1 - fi - - # - # now actually destroy the databases - # - - for i in $DBLIST - do - echo "destroying database $i" - - QUERY="drop database $i" - $PSQL -c "$QUERY" template1 - if [ $? -ne 0 ] - then - echo "$CMDNAME: drop database on $i failed - exiting" - exit 1 - fi - done -fi - -QUERY="delete from pg_shadow where usename = '$DELUSER'" - -$PSQL -c "$QUERY" template1 -if [ $? -ne 0 ] -then - echo "$CMDNAME: delete of user $DELUSER was UNSUCCESSFUL" -else - echo "$CMDNAME: delete of user $DELUSER was successful." -fi - -exit 0 |