  <REFENTRY ID="SQL-ALTERUSER-1">
   <REFMETA>
    <REFENTRYTITLE>
     ALTER USER
    </REFENTRYTITLE>
    <REFMISCINFO>SQL - Language Statements</REFMISCINFO>
   </REFMETA>
   <REFNAMEDIV>
    <REFNAME>
     ALTER USER
    </REFNAME>
    <REFPURPOSE>
     Modifies user account information
    </REFPURPOSE>
   <REFSYNOPSISDIV>
    <REFSYNOPSISDIVINFO>
     <DATE>1998-04-15</DATE>
    </REFSYNOPSISDIVINFO>
    <synopsis>
     ALTER USER <replaceable class="PARAMETER">username</replaceable>
     [WITH PASSWORD <replaceable class="PARAMETER">password</replaceable>]
     [CREATEDB | NOCREATEDB]
     [CREATEUSER | NOCREATEUSER]
     [IN GROUP <replaceable class="PARAMETER">groupname</replaceable> [, ...] ]
     [VALID UNTIL '<replaceable class="PARAMETER">abstime</replaceable>']
    </synopsis>
    
    <REFSECT2 ID="R2-SQL-ALTERUSER-1">
     <REFSECT2INFO>
      <DATE>1998-04-15</DATE>
     </REFSECT2INFO>
     <TITLE>
      Inputs
     </TITLE>
     <PARA>
      Refer to CREATE USER statement for a detailed description of each
      clause.
     </para>
      <VARIABLELIST>
       <VARLISTENTRY>
	<TERM>
	 <REPLACEABLE CLASS="PARAMETER"> username </REPLACEABLE>
	</TERM>
	<LISTITEM>
	 <PARA>
	  The Postgres account name of the user whose details are to be altered.
	 </PARA>
	</LISTITEM>
       </VARLISTENTRY>
       <VARLISTENTRY>
	<TERM>
	 <REPLACEABLE CLASS="PARAMETER"> password </REPLACEABLE>
	</TERM>
	<LISTITEM>
	 <PARA>
	  The new password to be used for this account.
	 </PARA>
	</LISTITEM>
       </VARLISTENTRY>
       <VARLISTENTRY>
	<TERM>
	 <REPLACEABLE CLASS="PARAMETER"> groupname </REPLACEABLE>
	</TERM>
	<LISTITEM>
	 <PARA>
	  The name of an access group into which this account is to be put.
	 </PARA>
	</LISTITEM>
       </VARLISTENTRY>
       <VARLISTENTRY>
	<TERM>
	 <REPLACEABLE CLASS="PARAMETER"> abstime </REPLACEABLE>
	</TERM>
	<LISTITEM>
	 <PARA>
	  The date (and, optionally, the time) at which this user's access is to be terminated.
	 </PARA>
	</LISTITEM>
       </VARLISTENTRY>
      </VARIABLELIST>
    </REFSECT2>
    
    <REFSECT2 ID="R2-SQL-ALTERUSER-2">
     <REFSECT2INFO>
      <DATE>1998-04-15</DATE>
     </REFSECT2INFO>
     <TITLE>
      Outputs
     </TITLE>
     <PARA>
     </PARA>
     <VARIABLELIST>
      <VARLISTENTRY>
       <TERM>
	<ReturnValue>status</ReturnValue>
       </TERM>
       <LISTITEM>
	<PARA>
	 <VARIABLELIST>
	  <VARLISTENTRY>
	   <TERM>
	    <ReturnValue>ALTER USER</ReturnValue>
	   </TERM>
	   <LISTITEM>
	    <PARA>
	     Message returned if the alteration was successful.
	    </PARA>
	   </LISTITEM>
	  </VARLISTENTRY>
	  
	  <VARLISTENTRY>
	   <TERM>
	    <ReturnValue>ERROR: alterUser: user "username" does not exist</ReturnValue>
	   </TERM>
	   <LISTITEM>
	    <PARA>
	     Error message returned if the user specified doesn't
	     exist.
	    </PARA>
	   </LISTITEM>
	  </VARLISTENTRY>
	 </VARIABLELIST>
	</para>
       </listitem>
      </varlistentry>
     </variablelist>
    </REFSECT2>
   </REFSYNOPSISDIV>
   
   <REFSECT1 ID="R1-SQL-ALTERUSER-1">
    <REFSECT1INFO>
     <DATE>1998-04-15</DATE>
    </REFSECT1INFO>
    <TITLE>
     Description
    </TITLE>
    <PARA>
     ALTER USER is used to change the attributes of a user's
     PostgreSQL account. Please note that it is not possible
     to alter a user's "usesysid" via the alter user
     statement. Also, it is only possible for the PostgreSQL
     user or any user with read and modify permissions on
     "pg_shadow" to alter user passwords.
    </PARA>
    <para>
     If any of the clauses of the alter user statement are
     omitted, the corresponding value in the "pg_shadow" table
     is left unchanged.
    </para>
    
    <REFSECT2 ID="R2-SQL-ALTERUSER-3">
     <REFSECT2INFO>
      <DATE>1998-04-15</DATE>
     </REFSECT2INFO>
     <TITLE>
      Notes
     </TITLE>
     <PARA>
      ALTER USER statement is a PostgreSQL language extension.
     </para>
     <para>
      Refer to CREATE/DROP USER statements to create/remove an user
      account.
     </para>
     <para>
      At the current release (6.3.2), the IN GROUP clause is parsed
      but has no effect.  When it is fully implemented, it is
      intended to modify the pg_group relation.
     </para>
    </REFSECT2>
   </refsect1>
   
   <REFSECT1 ID="R1-SQL-ALTERUSER-2">
    <TITLE>
     Usage
    </TITLE>
    <PARA>
     Change a user password
    </PARA>
    <ProgramListing>
     ALTER USER davide WITH PASSWORD hu8jmn3;
    </ProgramListing>
    <para>
     Change a user's valid until date
    </para>
    <ProgramListing>
     ALTER USER manuel VALID UNTIL 'Jan 31 2030';
    </ProgramListing>
    <para>
     Change a user's valid until date, specifying that his
authorisation should expire at midday on 4th May 1998 using
the time zone which is one hour ahead of UTC
    </para>
    <ProgramListing>
     ALTER USER chris VALID UNTIL 'May 4 12:00:00 1998 +1';
    </ProgramListing>
    <para>
     Give a user the ability to create other users and new databases.
    </para>
    <programlisting>
     ALTER USER miriam CREATEUSER CREATEDB;
    </programlisting>
    <para>
     Place a user in two groups
    </para>
    <programlisting>
     ALTER USER miriam IN GROUP sales, payroll;
    </programlisting>
   </REFSECT1>
   
   <REFSECT1 ID="R1-SQL-ALTERUSER-3">
    <TITLE>
     Compatibility
    </TITLE>
    <PARA>
    </PARA>
    
    <REFSECT2 ID="R2-SQL-ALTERUSER-4">
     <REFSECT2INFO>
      <DATE>1998-04-15</DATE>
     </REFSECT2INFO>
     <TITLE>
      SQL92
     </TITLE>
     <PARA>
      There is no ALTER USER statement in SQL92.  The standard leaves
      the definition of users to the implementation.
     </PARA>
   </refsect1>
  </REFENTRY>

<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
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:
-->
