initdb - Create a new Postgres database cluster


SYNOPSIS

       initdb  { --pgdata  | -D dbdir } [ --sysid  | -i sysid ] [
       --pwprompt | -W ] [ --encoding   |  -E  encoding  ]  [  -L
       directory ] [ --noclean | -n ] [ --debug | -d ]


DESCRIPTION

       initdb  creates a new Postgres database cluster or system.
       A database cluster is a collection of databases  that  are
       managed by a single postmaster.

       Creating a database system consists of creating the direc­
       tories in which the database data  will  live,  generating
       the shared catalog tables (tables that belong to the whole
       cluster rather than to any particular database), and  cre­
       ating  the  template1  database.  When  you  create  a new
       database, everything in the template1 database is  copied.
       It  contains  catalog tables filled in for things like the
       built-in types.

       You must not execute initdb as root; it must be run by the
       Unix user account that will run the database server.  This
       is because you cannot run  the  database  server  as  root
       either,  but  the server needs to have access to the files
       initdb creates.  Furthermore,  during  the  initialization
       phase,  when  there  are  no  users and no access controls
       installed, Postgres will only connect with the name of the
       current  Unix  user,  so you must log in under the account
       that will own the server process.

       Although initdb will attempt to create the specified  data
       directory,  often it won't have permission to do so, since
       the parent of the desired data directory is often a  root-
       owned  directory. To set up an arrangement like this, cre­
       ate an empty data directory as root,  then  use  chown  to
       hand over ownership of that directory to the database user
       account, then su to become the database user, and  finally
       run initdb as the database user.

   OPTIONS
       --pgdata=dbdir

       -D dbdir
              This  option specifies where in the file system the
              database should be stored. This is the only  infor­
              mation  required by initdb, but you can avoid writ­
              ing it by setting the PGDATA environment  variable,
              which  can  be convenient since the database server
              (postmaster) can find the database directory  later
              by the same variable.


       -i sysid
              Selects  the  system  id of the database superuser.
              This defaults to the effective user id of the  user
              running initdb. It is really not important what the
              superuser's sysid is, but one might choose to start
              the numbering at some number like 1.

       --pwprompt

       -W     Makes  initdb  prompt  for  a  password to give the
              database superuser. If  you  don't  plan  on  using
              password  authentication,  this  is  not important.
              Otherwise you won't be able to use password authen­
              tication until you have a password set up.

       --encoding=encoding

       -E encoding
              Selects  the  multibyte  encoding  of  the template
              database. This will also be the default encoding of
              any  database you create later, unless you override
              it there. To use the  multibyte  encoding  feature,
              you  must  specify  so at build time, at which time
              you also select the default for this option.

       Other, less commonly used, parameters are also available:

       -L directory
              Specifies where initdb should find its input  files
              to initialize the database system. This is normally
              not necessary. You will be  told  if  you  need  to
              specify their location explicitly.

       --noclean

       -n     By  default,  when  initdb determines that an error
              prevented it from completely creating the  database
              system,  it  removes  any files it may have created
              before discovering that it can't  finish  the  job.
              This  option inhibits tidying-up and is thus useful
              for debugging.

       --debug

       -d     Print debugging output from the  bootstrap  backend
              and a few other messages of lesser interest for the
              general public.  The bootstrap backend is the  pro­
              gram initdb uses to create the catalog tables. This
              option generates a tremendous amount  of  extremely
              boring output.

       PostgreSQL Administrator's Guide


Man(1) output converted with man2html