]> granicus.if.org Git - postgresql/blob - src/bin/scripts/dropuser
Okay, that should put us back in sync. These two patches (src & doc) are
[postgresql] / src / bin / scripts / dropuser
1 #!/bin/sh
2 #-------------------------------------------------------------------------
3 #
4 # dropuser--
5 #    Utility for removing a user from the PostgreSQL database.
6 #
7 # Copyright (c) 1994, Regents of the University of California
8 #
9 #
10 # IDENTIFICATION
11 #    $Header: /cvsroot/pgsql/src/bin/scripts/Attic/dropuser,v 1.3 1999/12/07 22:41:44 momjian Exp $
12 #
13 # Note - this should NOT be setuid.
14 #
15 #-------------------------------------------------------------------------
16
17 CMDNAME=`basename $0`
18 PSQLOPT=
19 forcedel=t
20 DelUser=
21
22 # Check for echo -n vs echo \c
23
24 if echo '\c' | grep -s c >/dev/null 2>&1
25 then
26     ECHO_N="echo -n"
27     ECHO_C=""
28 else
29     ECHO_N="echo"
30     ECHO_C='\c'
31 fi
32
33
34 while [ $# -gt 0 ]
35 do
36     case "$1" in
37         --help|-\?)
38                 usage=t
39                 break
40                 ;;
41 # options passed on to psql
42         --host|-h)
43                 PSQLOPT="$PSQLOPT -h $2"
44                 shift;;
45         -h*)
46                 PSQLOPT="$PSQLOPT $1"
47                 ;;
48         --host=*)
49                 PSQLOPT="$PSQLOPT -h "`echo $1 | sed 's/^--host=//'`
50                 ;;
51         --port|-p)
52                 PSQLOPT="$PSQLOPT -p $2"
53                 shift;;
54         -p*)
55                 PSQLOPT="$PSQLOPT $1"
56                 ;;
57         --port=*)
58                 PSQLOPT="$PSQLOPT -p "`echo $1 | sed 's/^--port=//'`
59                 ;;
60 # Note: These two specify the user to connect as (like in psql),
61 #       not the user you're dropping.
62         --user|--username|-U)
63                 PSQLOPT="$PSQLOPT -U '$2'"
64                 shift;;
65         -U*)
66                 PSQLOPT="$PSQLOPT $1"
67                 ;;
68         --user=*)
69                 PSQLOPT="$PSQLOPT -U "`echo $1 | sed 's/^--user=//'`
70                 ;;
71         --username=*)
72                 PSQLOPT="$PSQLOPT -U "`echo $1 | sed 's/^--username=//'`
73                 ;;
74         --password|-W)
75                 PSQLOPT="$PSQLOPT -W"
76                 ;;
77         --echo|-e)
78                 PSQLOPT="$PSQLOPT -e"
79                 ;;
80         --quiet|-q)
81                 PSQLOPT="$PSQLOPT -o /dev/null"
82                 ;;
83 # other options
84         --interactive|-i)
85                 forcedel=f
86                 ;;
87         -*)
88                 echo "$CMDNAME: Unrecognized option: $1. Try -? for help."
89                 exit 1
90                 ;;
91          *)
92                 DelUser="$1"
93                 ;;
94     esac
95     shift;
96 done
97
98
99 # Help
100
101 if [ "$usage" ]; then
102         echo "Usage: $CMDNAME [-h server] [-p port] [-i] [username]"
103         exit 0
104 fi
105
106 # Prompt for username if missing
107
108 if [ -z "$DelUser" ]; then
109         $ECHO_N "Enter name of user to delete: "$ECHO_C
110         read DelUser
111         [ $? -ne 0 ] && exit 1
112 fi
113
114
115 if [ "$forcedel" = f ]; then
116         echo "User \"$DelUser\" and any owned databases will be permanently deleted."
117         $ECHO_N "Are you sure? (y/n) "$ECHO_C
118         read REPLY
119
120         [ $? -eq 1 ] && exit 1
121         [ "$REPLY" != "y" -a "$REPLY" != "Y" ] && exit 0
122 fi
123
124
125 DelUser=`echo $DelUser | sed 's/\"/\\\"/g'`
126
127 psql $PSQLOPT -d template1 -c "DROP USER \"$DelUser\""
128
129 if [ $? -ne 0 ]; then
130         echo "$CMDNAME: Deletion of user \"$DelUser\" failed."
131         exit 1
132 fi
133
134 exit 0