<!--
$Header: /cvsroot/pgsql/doc/src/sgml/ref/dropuser.sgml,v 1.28 2003/08/31 17:32:23 petere Exp $
PostgreSQL documentation
-->

<refentry id="APP-DROPUSER">
 <refmeta>
  <refentrytitle id="APP-DROPUSER-TITLE"><application>dropuser</application></refentrytitle>
  <manvolnum>1</manvolnum>
  <refmiscinfo>Application</refmiscinfo>
 </refmeta>

 <refnamediv>
  <refname>dropuser</refname>
  <refpurpose>remove a <productname>PostgreSQL</productname> user account</refpurpose>
 </refnamediv>

 <indexterm zone="app-dropuser">
  <primary>dropuser</primary>
 </indexterm>

 <refsynopsisdiv>
  <cmdsynopsis>
   <command>dropuser</command>
   <arg rep="repeat"><replaceable>option</replaceable></arg>
   <arg><replaceable>username</replaceable></arg>
  </cmdsynopsis>
 </refsynopsisdiv>


 <refsect1>
  <title>Description</title>

  <para>
   <application>dropuser</application> removes an existing
   <productname>PostgreSQL</productname> user
   <emphasis>and</emphasis> the databases which that user owned.
   Only superusers (users with <literal>usesuper</literal> set in
   the <literal>pg_shadow</literal> table) can destroy 
   <productname>PostgreSQL</productname> users.
  </para>

  <para>
   <application>dropuser</application> is a wrapper around the
   <acronym>SQL</acronym> command <xref linkend="SQL-DROPUSER"
   endterm="SQL-DROPUSER-title">.  The database server must be running
   on the targeted host.  There is nothing special about removing
   users via this or other methods.  Also, any default settings and
   environment variables used by the <application>libpq</application>
   front-end library will apply.
  </para>
 </refsect1>


 <refsect1>
  <title>Options</title>

  <para>
   <application>dropuser</application> accepts the following command-line arguments:

    <variablelist>
     <varlistentry>
      <term><replaceable class="parameter">username</replaceable></term>
      <listitem>
       <para>
	Specifies the name of the <productname>PostgreSQL</productname> user to be removed. 
	You will be prompted for a name if none is specified on the command line.
       </para>
      </listitem>
     </varlistentry>

     <varlistentry>
      <term><option>-e</></term>
      <term><option>--echo</></term>
      <listitem>
       <para>
        Echo the commands that <application>dropuser</application> generates
	and sends to the server.
       </para>
      </listitem>
     </varlistentry>

     <varlistentry>
      <term><option>-i</></term>
      <term><option>--interactive</></term>
      <listitem>
       <para>
        Prompt for confirmation before actually removing the user.
       </para>
      </listitem>
     </varlistentry>

     <varlistentry>
      <term><option>-q</></term>
      <term><option>--quiet</></term>
      <listitem>
       <para>
        Do not display a response.
       </para>
      </listitem>
     </varlistentry>
    </variablelist>
  </para>

  <para>
   <application>createuser</application> also accepts the following
   command-line arguments for connection parameters:
    
   <variablelist>
     <varlistentry>
      <term><option>-h <replaceable class="parameter">host</replaceable></></term>
      <term><option>--host <replaceable class="parameter">host</replaceable></></term>
      <listitem>
       <para>
	Specifies the host name of the machine on which the 
	server
	is running.  If the value begins with a slash, it is used 
	as the directory for the Unix domain socket.
       </para>
      </listitem>
     </varlistentry>

     <varlistentry>
      <term><option>-p <replaceable class="parameter">port</replaceable></></term>
      <term><option>--port <replaceable class="parameter">port</replaceable></></term>
      <listitem>
       <para>
	Specifies the TCP port or local Unix domain socket file 
	extension on which the server
	is listening for connections.
       </para>
      </listitem>
     </varlistentry>

     <varlistentry>
      <term><option>-U <replaceable class="parameter">username</replaceable></></term>
      <term><option>--username <replaceable class="parameter">username</replaceable></></term>
      <listitem>
       <para>
        User name to connect as (not the user name to drop)
       </para>
      </listitem>
     </varlistentry>

     <varlistentry>
      <term><option>-W</></term>
      <term><option>--password</></term>
      <listitem>
       <para>
        Force password prompt (to connect to the server, not for the
        password of the user to be dropped).
       </para>
      </listitem>
     </varlistentry>
   </variablelist>
  </para>
 </refsect1>


 <refsect1>
  <title>Environment</title>

  <variablelist>
   <varlistentry>
    <term><envar>PGHOST</envar></term>
    <term><envar>PGPORT</envar></term>
    <term><envar>PGUSER</envar></term>

    <listitem>
     <para>
      Default connection parameters
     </para>
    </listitem>
   </varlistentry>
  </variablelist>
 </refsect1>


 <refsect1>
   <title>Diagnostics</title>

    <variablelist>
     <varlistentry>
      <term><computeroutput>DROP USER</computeroutput></term>
      <listitem>
       <para>
        The user was successfully removed.
       </para>
      </listitem>
     </varlistentry>

     <varlistentry>
      <term><computeroutput>dropuser: deletion of user "<replaceable class="parameter">username</replaceable>" failed</computeroutput></term>
      <listitem>
       <para>
        Something went wrong. The user was not removed.
       </para>
      </listitem>
     </varlistentry>

    </variablelist>

   <para>
    If there is an error condition, the backend error message will be displayed.
    See <xref linkend="SQL-DROPUSER" endterm="SQL-DROPUSER-title">
    and <xref linkend="APP-PSQL"> for possibilities.
   </para>
 </refsect1>


 <refsect1>
  <title>Examples</title>

   <para>
    To remove user <literal>joe</literal> from the default database
    server:
<screen>
<prompt>$ </prompt><userinput>dropuser joe</userinput>
<computeroutput>DROP USER</computeroutput>
</screen>
   </para>

   <para>
    To remove user <literal>joe</literal> using the server on host
    <literal>eden</literal>, port 5000, with verification and a peek at the underlying
    command:
<screen>
<prompt>$ </prompt><userinput>dropuser -p 5000 -h eden -i -e joe</userinput>
<computeroutput>User "joe" and any owned databases will be permanently deleted.
Are you sure? (y/n) </computeroutput><userinput>y</userinput>
<computeroutput>DROP USER "joe"
DROP USER</computeroutput>
</screen>
   </para>
 </refsect1>


 <refsect1>
  <title>See Also</title>

  <simplelist type="inline">
   <member><xref linkend="app-createuser"></member>
   <member><xref linkend="sql-dropuser" endterm="sql-dropuser-title"></member>
  </simplelist>
 </refsect1>

</refentry>

<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:nil
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
sgml-parent-document:nil
sgml-default-dtd-file:"../reference.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:"/usr/lib/sgml/catalog"
sgml-local-ecat-files:nil
End:
-->
