⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 destroyuser.sh

📁 关系型数据库 Postgresql 6.5.2
💻 SH
字号:
#!/bin/sh#-------------------------------------------------------------------------## destroyuser.sh--#    utility for destroying a user from the POSTGRES database.## Copyright (c) 1994, Regents of the University of California### IDENTIFICATION#    $Header: /usr/local/cvsroot/pgsql/src/bin/destroyuser/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    fifiwhile (test -n "$1")do    case $1 in 	-a) AUTHSYS=$2; shift;;        -h) PGHOST=$2; shift;;        -p) PGPORT=$2; shift;;         *) DELUSER=$1;;    esac    shift;doneif [ -z "$AUTHSYS" ]; then  AUTHOPT=""else  AUTHOPT="-a $AUTHSYS"fiif [ -z "$PGHOST" ]; then  PGHOSTOPT=""else  PGHOSTOPT="-h $PGHOST"fiif [ -z "$PGPORT" ]; then  PGPORTOPT=""else  PGPORTOPT="-p $PGPORT"fiPARGS="-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 1fiif [ x$ADDUSER != xt ]then    echo "$CMDNAME: $USER cannot delete users."    exit 1fi## 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 DELUSERfiQUERY="select usesysid from pg_user where usename = '$DELUSER'"RES=`$PSQL -c "$QUERY" template1`if [ $? -ne 0 ]then    echo "$CMDNAME: database access failed."    exit 1fiif [ ! -n "$RES" ]then    echo "$CMDNAME: user "\"$DELUSER\"" does not exist."    exit 1fiSYSID=`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 1fi## don't try to delete template1!#for i in $ALLDBSdo    if [ $i != "template1" ]    then        DBLIST="$DBLIST $i"    fidoneif [ -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    donefiQUERY="delete from pg_shadow where usename = '$DELUSER'"$PSQL -c "$QUERY" template1if [ $? -ne 0 ]then    echo "$CMDNAME: delete of user $DELUSER was UNSUCCESSFUL"else    echo "$CMDNAME: delete of user $DELUSER was successful."fiexit 0

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -