<!-- $Header: /cvsroot/pgsql/doc/src/sgml/ref/alter_user.sgml,v 1.21 2002/03/22 19:20:36 petere Exp $ PostgreSQL documentation --> <refentry id="SQL-ALTERUSER"> <refmeta> <refentrytitle id="sql-alteruser-title">ALTER USER</refentrytitle> <refmiscinfo>SQL - Language Statements</refmiscinfo> </refmeta> <refnamediv> <refname>ALTER USER</refname> <refpurpose>change a database user account</refpurpose> </refnamediv> <refsynopsisdiv> <synopsis> ALTER USER <replaceable class="PARAMETER">username</replaceable> [ [ WITH ] <replaceable class="PARAMETER">option</replaceable> [ ... ] ] where <replaceable class="PARAMETER">option</replaceable> can be: [ ENCRYPTED | UNENCRYPTED ] PASSWORD '<replaceable class="PARAMETER">password</replaceable>' | CREATEDB | NOCREATEDB | CREATEUSER | NOCREATEUSER | VALID UNTIL '<replaceable class="PARAMETER">abstime</replaceable>' ALTER USER <replaceable class="PARAMETER">username</replaceable> SET <replaceable>variable</replaceable> { TO | = } { <replaceable>value</replaceable> | DEFAULT } ALTER USER <replaceable class="PARAMETER">username</replaceable> RESET <replaceable>variable</replaceable> </synopsis> </refsynopsisdiv> <refsect1> <title>Description</title> <para> <command>ALTER USER</command> is used to change the attributes of a <productname>PostgreSQL</productname> user account. Attributes not mentioned in the command retain their previous settings. </para> <para> The first variant of this command in the synopsis changes certain global user privileges and authentication settings. (See below for details.) Only a database superuser can change privileges and password expiration with this command. Ordinary users can only change their own password. </para> <para> The second and the third variant change a user's session default of a specified configuration variable. Whenever the user subsequently starts a new session, <literal>SET <replaceable>variable</replaceable> TO <replaceable>value</replaceable></literal> is effectively executed before the start of the session. Ordinary users can change their own session defaults. Superusers can change anyone's session defaults. </para> <refsect2> <title>Parameters</title> <para> <variablelist> <varlistentry> <term><replaceable class="PARAMETER">username</replaceable></term> <listitem> <para> The name of the user whose attributes 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><literal>ENCRYPTED</literal></term> <term><literal>UNENCRYPTED</literal></term> <listitem> <para> These key words control whether the password is stored encrypted in <literal>pg_shadow</>. (See <xref linkend="SQL-CREATEUSER" endterm="SQL-CREATEUSER-title"> for more information about this choice.) </para> </listitem> </varlistentry> <varlistentry> <term><literal>CREATEDB</literal></term> <term><literal>NOCREATEDB</literal></term> <listitem> <para> These clauses define a user's ability to create databases. If <literal>CREATEDB</literal> is specified, the user being defined will be allowed to create his own databases. Using <literal>NOCREATEDB</literal> will deny a user the ability to create databases. </para> </listitem> </varlistentry> <varlistentry> <term><literal>CREATEUSER</literal></term> <term><literal>NOCREATEUSER</literal></term> <listitem> <para> These clauses determine whether a user will be permitted to create new users himself. This option will also make the user a superuser who can override all access restrictions. </para> </listitem> </varlistentry> <varlistentry> <term><replaceable class="PARAMETER">abstime</replaceable></term> <listitem> <para> The date (and, optionally, the time) at which this user's password is to expire. </para> </listitem> </varlistentry> <varlistentry> <term><replaceable>variable</replaceable></term> <term><replaceable>value</replaceable></term> <listitem> <para> Set this user's session default of the specified configuration variable to the given value. If <replaceable>value</replaceable> is <literal>DEFAULT</literal> or, equivalently, <literal>RESET</literal> is used, the user-specific variable setting is removed and the user will inherit the default setting in new sessions. Use <literal>RESET ALL</literal> to clear all settings. </para> <para> See <xref linkend="sql-set" endterm="sql-set-title"> and the <citetitle>Administrator's Guide</citetitle> for more information about allowed variable names and values. </para> </listitem> </varlistentry> </variablelist> </para> </refsect2> </refsect1> <refsect1> <title>Diagnostics</title> <para> <variablelist> <varlistentry> <term><computeroutput>ALTER USER</computeroutput></term> <listitem> <para> Message returned if the alteration was successful. </para> </listitem> </varlistentry> <varlistentry> <term><computeroutput>ERROR: ALTER USER: user "username" does not exist</computeroutput></term> <listitem> <para> Error message returned if the specified user is not known to the database. </para> </listitem> </varlistentry> </variablelist> </para> </refsect1> <refsect1> <title>Notes</title> <para> Use <xref linkend="SQL-CREATEUSER" endterm="SQL-CREATEUSER-title"> to add new users, and <xref linkend="SQL-DROPUSER" endterm="SQL-DROPUSER-title"> to remove a user. </para> <para> <command>ALTER USER</command> cannot change a user's group memberships. Use <xref linkend="SQL-ALTERGROUP" endterm="SQL-ALTERGROUP-title"> to do that. </para> <para> Using <xref linkend="sql-alterdatabase" endterm="sql-alterdatabase-title">, it is also possible to tie a session default to a specific database rather than a user. </para> </refsect1> <refsect1> <title>Examples</title> <para> Change a user password: <programlisting> ALTER USER davide WITH PASSWORD 'hu8jmn3'; </programlisting> </para> <para> Change a user's valid until date: <programlisting> ALTER USER manuel VALID UNTIL 'Jan 31 2030'; </programlisting> </para> <para> Change a user's valid until date, specifying that his authorization should expire at midday on 4th May 1998 using the time zone which is one hour ahead of UTC: <programlisting> ALTER USER chris VALID UNTIL 'May 4 12:00:00 1998 +1'; </programlisting> </para> <para> Give a user the ability to create other users and new databases: <programlisting> ALTER USER miriam CREATEUSER CREATEDB; </programlisting> </para> </refsect1> <refsect1> <title>Compatibility</title> <para> The <command>ALTER USER</command> statement is a <productname>PostgreSQL</productname> extension. The SQL standard leaves the definition of users to the implementation. </para> </refsect1> <refsect1> <title>See Also</title> <simplelist type="inline"> <member><xref linkend="sql-createuser" endterm="sql-createuser-title"></member> <member><xref linkend="sql-dropuser" endterm="sql-dropuser-title"></member> <member><xref linkend="sql-set" endterm="sql-set-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: -->