  <REFENTRY ID="SQL-ALTERUSER">
   <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-09-08</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-09-08</DATE>
     </REFSECT2INFO>
     <TITLE>
      Inputs
     </TITLE>
     <PARA>
      Refer to <command>CREATE USER</command> 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-09-08</DATE>
     </REFSECT2INFO>
     <TITLE>
      Outputs
     </TITLE>
     <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.

     </variablelist>
    </REFSECT2>
   </REFSYNOPSISDIV>
   
   <REFSECT1 ID="R1-SQL-ALTERUSER-1">
    <REFSECT1INFO>
     <DATE>1998-09-08</DATE>
    </REFSECT1INFO>
    <TITLE>
     Description
    </TITLE>
    <PARA>
     <command>ALTER USER</command> is used to change the attributes of a user's
     <productname>Postgres</productname> 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
 <productname>Postgres</productname>
     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-09-08</DATE>
     </REFSECT2INFO>
     <TITLE>
      Notes
     </TITLE>
     <PARA>
      <command>ALTER USER</command> statement
 is a <productname>Postgres</productname>
 language extension.
     </para>
     <para>
      Refer to <command>CREATE/DROP USER</command>
  to create or remove a user
      account.
     </para>
     <para>
      In the current release (v6.4), the IN GROUP clause is parsed
      but has no affect.  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-09-08</DATE>
     </REFSECT2INFO>
     <TITLE>
      SQL92
     </TITLE>
     <PARA>
      There is no <command>ALTER USER</command> statement in
 <acronym>SQL92</acronym>.
  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:
-->
