Home Explore Blog CI



postgresql

doc/src/sgml/ref/create_user.sgml
d9a87c398e044de814fa46f811bfed95ef16b115f18994f200000003000009c9
<!--
doc/src/sgml/ref/create_user.sgml
PostgreSQL documentation
-->

<refentry id="sql-createuser">
 <indexterm zone="sql-createuser">
  <primary>CREATE USER</primary>
 </indexterm>

 <refmeta>
  <refentrytitle>CREATE USER</refentrytitle>
  <manvolnum>7</manvolnum>
  <refmiscinfo>SQL - Language Statements</refmiscinfo>
 </refmeta>

 <refnamediv>
  <refname>CREATE USER</refname>
  <refpurpose>define a new database role</refpurpose>
 </refnamediv>

 <refsynopsisdiv>
<synopsis>
CREATE USER <replaceable class="parameter">name</replaceable> [ [ WITH ] <replaceable class="parameter">option</replaceable> [ ... ] ]

<phrase>where <replaceable class="parameter">option</replaceable> can be:</phrase>

      SUPERUSER | NOSUPERUSER
    | CREATEDB | NOCREATEDB
    | CREATEROLE | NOCREATEROLE
    | INHERIT | NOINHERIT
    | LOGIN | NOLOGIN
    | REPLICATION | NOREPLICATION
    | BYPASSRLS | NOBYPASSRLS
    | CONNECTION LIMIT <replaceable class="parameter">connlimit</replaceable>
    | [ ENCRYPTED ] PASSWORD '<replaceable class="parameter">password</replaceable>' | PASSWORD NULL
    | VALID UNTIL '<replaceable class="parameter">timestamp</replaceable>'
    | IN ROLE <replaceable class="parameter">role_name</replaceable> [, ...]
    | IN GROUP <replaceable class="parameter">role_name</replaceable> [, ...]
    | ROLE <replaceable class="parameter">role_name</replaceable> [, ...]
    | ADMIN <replaceable class="parameter">role_name</replaceable> [, ...]
    | USER <replaceable class="parameter">role_name</replaceable> [, ...]
    | SYSID <replaceable class="parameter">uid</replaceable>
</synopsis>
 </refsynopsisdiv>

 <refsect1>
  <title>Description</title>

  <para>
   <command>CREATE USER</command> is now an alias for
   <link linkend="sql-createrole"><command>CREATE ROLE</command></link>.
   The only difference is that when the command is spelled
   <command>CREATE USER</command>, <literal>LOGIN</literal> is assumed
   by default, whereas <literal>NOLOGIN</literal> is assumed when
   the command is spelled
   <command>CREATE ROLE</command>.
  </para>
 </refsect1>

 <refsect1>
  <title>Compatibility</title>

  <para>
   The <command>CREATE 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-createrole"/></member>
  </simplelist>
 </refsect1>
</refentry>

Chunks
8a449cf8 (1st chunk of `doc/src/sgml/ref/create_user.sgml`)
Title: CREATE USER Reference
Summary
This documentation describes the CREATE USER command in PostgreSQL, which is now an alias for CREATE ROLE. The key difference is that CREATE USER assumes LOGIN by default, while CREATE ROLE assumes NOLOGIN. The statement is a PostgreSQL extension, as the SQL standard leaves user definition to the implementation.