<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <HTML ><HEAD ><TITLE >createuser</TITLE ><META NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK REV="MADE" HREF="mailto:pgsql-docs@postgresql.org"><LINK REL="HOME" TITLE="PostgreSQL 7.4.1 Documentation" HREF="index.html"><LINK REL="UP" TITLE="PostgreSQL Client Applications" HREF="reference-client.html"><LINK REL="PREVIOUS" TITLE="createlang" HREF="app-createlang.html"><LINK REL="NEXT" TITLE="dropdb" HREF="app-dropdb.html"><LINK REL="STYLESHEET" TYPE="text/css" HREF="stylesheet.css"><META NAME="creation" CONTENT="2003-12-22T03:48:47"></HEAD ><BODY CLASS="REFENTRY" ><DIV CLASS="NAVHEADER" ><TABLE SUMMARY="Header navigation table" WIDTH="100%" BORDER="0" CELLPADDING="0" CELLSPACING="0" ><TR ><TH COLSPAN="5" ALIGN="center" VALIGN="bottom" >PostgreSQL 7.4.1 Documentation</TH ></TR ><TR ><TD WIDTH="10%" ALIGN="left" VALIGN="top" ><A HREF="app-createlang.html" ACCESSKEY="P" >Prev</A ></TD ><TD WIDTH="10%" ALIGN="left" VALIGN="top" ><A HREF="app-createlang.html" >Fast Backward</A ></TD ><TD WIDTH="60%" ALIGN="center" VALIGN="bottom" ></TD ><TD WIDTH="10%" ALIGN="right" VALIGN="top" ><A HREF="app-dropdb.html" >Fast Forward</A ></TD ><TD WIDTH="10%" ALIGN="right" VALIGN="top" ><A HREF="app-dropdb.html" ACCESSKEY="N" >Next</A ></TD ></TR ></TABLE ><HR ALIGN="LEFT" WIDTH="100%"></DIV ><H1 ><A NAME="APP-CREATEUSER" ></A ><SPAN CLASS="APPLICATION" >createuser</SPAN ></H1 ><DIV CLASS="REFNAMEDIV" ><A NAME="AEN43566" ></A ><H2 >Name</H2 >createuser -- define a new <SPAN CLASS="PRODUCTNAME" >PostgreSQL</SPAN > user account</DIV ><A NAME="AEN43570" ></A ><DIV CLASS="REFSYNOPSISDIV" ><A NAME="AEN43572" ></A ><H2 >Synopsis</H2 ><P ><TT CLASS="COMMAND" >createuser</TT > [<VAR CLASS="REPLACEABLE" >option</VAR >...] [<VAR CLASS="REPLACEABLE" >username</VAR >]</P ></DIV ><DIV CLASS="REFSECT1" ><A NAME="AEN43579" ></A ><H2 >Description</H2 ><P > <SPAN CLASS="APPLICATION" >createuser</SPAN > creates a new <SPAN CLASS="PRODUCTNAME" >PostgreSQL</SPAN > user. Only superusers (users with <TT CLASS="LITERAL" >usesuper</TT > set in the <TT CLASS="LITERAL" >pg_shadow</TT > table) can create new <SPAN CLASS="PRODUCTNAME" >PostgreSQL</SPAN > users, so <SPAN CLASS="APPLICATION" >createuser</SPAN > must be invoked by someone who can connect as a <SPAN CLASS="PRODUCTNAME" >PostgreSQL</SPAN > superuser. </P ><P > Being a superuser also implies the ability to bypass access permission checks within the database, so superuserdom should not be granted lightly. </P ><P > <SPAN CLASS="APPLICATION" >createuser</SPAN > is a wrapper around the <ACRONYM CLASS="ACRONYM" >SQL</ACRONYM > command <A HREF="sql-createuser.html" ><I >CREATE USER</I ></A >. There is no effective difference between creating users via this utility and via other methods for accessing the server. </P ></DIV ><DIV CLASS="REFSECT1" ><A NAME="AEN43594" ></A ><H2 >Options</H2 ><P > <SPAN CLASS="APPLICATION" >createuser</SPAN > accepts the following command-line arguments: <P ></P ></P><DIV CLASS="VARIABLELIST" ><DL ><DT ><VAR CLASS="REPLACEABLE" >username</VAR ></DT ><DD ><P > Specifies the name of the <SPAN CLASS="PRODUCTNAME" >PostgreSQL</SPAN > user to be created. This name must be unique among all <SPAN CLASS="PRODUCTNAME" >PostgreSQL</SPAN > users. </P ></DD ><DT ><VAR CLASS="OPTION" >-a</VAR ><BR><VAR CLASS="OPTION" >--adduser</VAR ></DT ><DD ><P > The new user is allowed to create other users. (Note: Actually, this makes the new user a <SPAN CLASS="emphasis" ><I CLASS="EMPHASIS" >superuser</I ></SPAN >. The option is poorly named.) </P ></DD ><DT ><VAR CLASS="OPTION" >-A</VAR ><BR><VAR CLASS="OPTION" >--no-adduser</VAR ></DT ><DD ><P > The new user is not allowed to create other users (i.e., the new user is a regular user, not a superuser). This is the default. </P ></DD ><DT ><VAR CLASS="OPTION" >-d</VAR ><BR><VAR CLASS="OPTION" >--createdb</VAR ></DT ><DD ><P > The new user is allowed to create databases. </P ></DD ><DT ><VAR CLASS="OPTION" >-D</VAR ><BR><VAR CLASS="OPTION" >--no-createdb</VAR ></DT ><DD ><P > The new user is not allowed to create databases. This is the default. </P ></DD ><DT ><VAR CLASS="OPTION" >-e</VAR ><BR><VAR CLASS="OPTION" >--echo</VAR ></DT ><DD ><P > Echo the commands that <SPAN CLASS="APPLICATION" >createuser</SPAN > generates and sends to the server. </P ></DD ><DT ><VAR CLASS="OPTION" >-E</VAR ><BR><VAR CLASS="OPTION" >--encrypted</VAR ></DT ><DD ><P > Encrypts the user's password stored in the database. If not specified, the default password behavior is used. </P ></DD ><DT ><VAR CLASS="OPTION" >-i <VAR CLASS="REPLACEABLE" >number</VAR ></VAR ><BR><VAR CLASS="OPTION" >--sysid <VAR CLASS="REPLACEABLE" >number</VAR ></VAR ></DT ><DD ><P > Allows you to pick a non-default user ID for the new user. This is not necessary, but some people like it. </P ></DD ><DT ><VAR CLASS="OPTION" >-N</VAR ><BR><VAR CLASS="OPTION" >--unencrypted</VAR ></DT ><DD ><P > Does not encrypt the user's password stored in the database. If not specified, the default password behavior is used. </P ></DD ><DT ><VAR CLASS="OPTION" >-P</VAR ><BR><VAR CLASS="OPTION" >--pwprompt</VAR ></DT ><DD ><P > If given, <SPAN CLASS="APPLICATION" >createuser</SPAN > will issue a prompt for the password of the new user. This is not necessary if you do not plan on using password authentication. </P ></DD ><DT ><VAR CLASS="OPTION" >-q</VAR ><BR><VAR CLASS="OPTION" >--quiet</VAR ></DT ><DD ><P > Do not display a response. </P ></DD ></DL ></DIV ><P> </P ><P > You will be prompted for a name and other missing information if it is not specified on the command line. </P ><P > <SPAN CLASS="APPLICATION" >createuser</SPAN > also accepts the following command-line arguments for connection parameters: <P ></P ></P><DIV CLASS="VARIABLELIST" ><DL ><DT ><VAR CLASS="OPTION" >-h <VAR CLASS="REPLACEABLE" >host</VAR ></VAR ><BR><VAR CLASS="OPTION" >--host <VAR CLASS="REPLACEABLE" >host</VAR ></VAR ></DT ><DD ><P > 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. </P ></DD ><DT ><VAR CLASS="OPTION" >-p <VAR CLASS="REPLACEABLE" >port</VAR ></VAR ><BR><VAR CLASS="OPTION" >--port <VAR CLASS="REPLACEABLE" >port</VAR ></VAR ></DT ><DD ><P > Specifies the TCP port or local Unix domain socket file extension on which the server is listening for connections. </P ></DD ><DT ><VAR CLASS="OPTION" >-U <VAR CLASS="REPLACEABLE" >username</VAR ></VAR ><BR><VAR CLASS="OPTION" >--username <VAR CLASS="REPLACEABLE" >username</VAR ></VAR ></DT ><DD ><P > User name to connect as (not the user name to create). </P ></DD ><DT ><VAR CLASS="OPTION" >-W</VAR ><BR><VAR CLASS="OPTION" >--password</VAR ></DT ><DD ><P > Force password prompt (to connect to the server, not for the password of the new user). </P ></DD ></DL ></DIV ><P> </P ></DIV ><DIV CLASS="REFSECT1" ><A NAME="AEN43719" ></A ><H2 >Environment</H2 ><P ></P ><DIV CLASS="VARIABLELIST" ><DL ><DT ><TT CLASS="ENVAR" >PGHOST</TT ><BR><TT CLASS="ENVAR" >PGPORT</TT ><BR><TT CLASS="ENVAR" >PGUSER</TT ></DT ><DD ><P > Default connection parameters </P ></DD ></DL ></DIV ></DIV ><DIV CLASS="REFSECT1" ><A NAME="AEN43731" ></A ><H2 >Diagnostics</H2 ><P > In case of difficulty, see <A HREF="sql-createuser.html" ><I >CREATE USER</I ></A > and <A HREF="app-psql.html" ><SPAN CLASS="APPLICATION" >psql</SPAN ></A > for discussions of potential problems and error messages. The database server must be running at the targeted host. Also, any default connection settings and environment variables used by the <SPAN CLASS="APPLICATION" >libpq</SPAN > front-end library will apply. </P ></DIV ><DIV CLASS="REFSECT1" ><A NAME="AEN43737" ></A ><H2 >Examples</H2 ><P > To create a user <TT CLASS="LITERAL" >joe</TT > on the default database server: </P><PRE CLASS="SCREEN" ><SAMP CLASS="PROMPT" >$ </SAMP ><KBD CLASS="USERINPUT" >createuser joe</KBD > <SAMP CLASS="COMPUTEROUTPUT" >Is the new user allowed to create databases? (y/n) </SAMP ><KBD CLASS="USERINPUT" >n</KBD > <SAMP CLASS="COMPUTEROUTPUT" >Shall the new user be allowed to create more new users? (y/n) </SAMP ><KBD CLASS="USERINPUT" >n</KBD > <SAMP CLASS="COMPUTEROUTPUT" >CREATE USER</SAMP ></PRE ><P> </P ><P > To create the same user <TT CLASS="LITERAL" >joe</TT > using the server on host <TT CLASS="LITERAL" >eden</TT >, port 5000, avoiding the prompts and taking a look at the underlying command: </P><PRE CLASS="SCREEN" ><SAMP CLASS="PROMPT" >$ </SAMP ><KBD CLASS="USERINPUT" >createuser -p 5000 -h eden -D -A -e joe</KBD > <SAMP CLASS="COMPUTEROUTPUT" >CREATE USER "joe" NOCREATEDB NOCREATEUSER</SAMP > <SAMP CLASS="COMPUTEROUTPUT" >CREATE USER</SAMP ></PRE ><P> </P ></DIV ><DIV CLASS="REFSECT1" ><A NAME="AEN43757" ></A ><H2 >See Also</H2 ><A HREF="app-dropuser.html" ><SPAN CLASS="APPLICATION" >dropuser</SPAN ></A >, <A HREF="sql-createuser.html" ><I >CREATE USER</I ></A ></DIV ><DIV CLASS="NAVFOOTER" ><HR ALIGN="LEFT" WIDTH="100%"><TABLE SUMMARY="Footer navigation table" WIDTH="100%" BORDER="0" CELLPADDING="0" CELLSPACING="0" ><TR ><TD WIDTH="33%" ALIGN="left" VALIGN="top" ><A HREF="app-createlang.html" ACCESSKEY="P" >Prev</A ></TD ><TD WIDTH="34%" ALIGN="center" VALIGN="top" ><A HREF="index.html" ACCESSKEY="H" >Home</A ></TD ><TD WIDTH="33%" ALIGN="right" VALIGN="top" ><A HREF="app-dropdb.html" ACCESSKEY="N" >Next</A ></TD ></TR ><TR ><TD WIDTH="33%" ALIGN="left" VALIGN="top" ><SPAN CLASS="APPLICATION" >createlang</SPAN ></TD ><TD WIDTH="34%" ALIGN="center" VALIGN="top" ><A HREF="reference-client.html" ACCESSKEY="U" >Up</A ></TD ><TD WIDTH="33%" ALIGN="right" VALIGN="top" ><SPAN CLASS="APPLICATION" >dropdb</SPAN ></TD ></TR ></TABLE ></DIV ></BODY ></HTML >