summaryrefslogtreecommitdiff
path: root/doc/src/sgml/ref/create_database.sgml
diff options
context:
space:
mode:
Diffstat (limited to 'doc/src/sgml/ref/create_database.sgml')
-rw-r--r--doc/src/sgml/ref/create_database.sgml250
1 files changed, 250 insertions, 0 deletions
diff --git a/doc/src/sgml/ref/create_database.sgml b/doc/src/sgml/ref/create_database.sgml
new file mode 100644
index 0000000000..98454ace49
--- /dev/null
+++ b/doc/src/sgml/ref/create_database.sgml
@@ -0,0 +1,250 @@
+<REFENTRY ID="SQL-CREATEDATABASE-1">
+ <REFMETA>
+ <REFENTRYTITLE>
+ CREATE DATABASE
+ </REFENTRYTITLE>
+ <REFMISCINFO>SQL - Language Statements</REFMISCINFO>
+ </REFMETA>
+ <REFNAMEDIV>
+ <REFNAME>
+ CREATE DATABASE
+ </REFNAME>
+ <REFPURPOSE>
+ Creates a new database
+ </REFPURPOSE>
+ <REFSYNOPSISDIV>
+ <REFSYNOPSISDIVINFO>
+ <DATE>1998-04-15</DATE>
+ </REFSYNOPSISDIVINFO>
+ <SYNOPSIS>
+ CREATE DATABASE <REPLACEABLE CLASS="PARAMETER">name</REPLACEABLE> [WITH LOCATION = '<replaceable class="parameter">dbpath</replaceable>']
+ </SYNOPSIS>
+
+ <REFSECT2 ID="R2-SQL-CREATEDATABASE-1">
+ <REFSECT2INFO>
+ <DATE>1998-04-15</DATE>
+ </REFSECT2INFO>
+ <TITLE>
+ Inputs
+ </TITLE>
+ <PARA>
+ </PARA>
+ <VARIABLELIST>
+ <VARLISTENTRY>
+ <TERM>
+ </TERM>
+ <LISTITEM>
+ <PARA>
+ <VARIABLELIST>
+ <VARLISTENTRY>
+ <TERM>
+ <replaceable class="parameter">name</replaceable>
+ </TERM>
+ <LISTITEM>
+ <PARA>
+ The name of a database to create.
+ </PARA>
+ </LISTITEM>
+ </VARLISTENTRY>
+ <VARLISTENTRY>
+ <TERM>
+ <replaceable class="parameter">dbpath</replaceable>
+ </TERM>
+ <LISTITEM>
+ <PARA>
+ An alternate location can be specified as either an
+ environment variable known to the backend server
+ (e.g. '<envar>PGDATA2</envar>') or as an absolute path name
+ (e.g. '<filename>/usr/local/pgsql/data</filename>').
+ In either case, the location must be pre-configured
+ by <command>initlocation</command>.
+ </PARA>
+ </LISTITEM>
+ </VARLISTENTRY>
+ </VARIABLELIST>
+ </LISTITEM>
+ </VARLISTENTRY>
+ </VARIABLELIST>
+ </REFSECT2>
+
+ <REFSECT2 ID="R2-SQL-CREATEDATABASE-2">
+ <REFSECT2INFO>
+ <DATE>1998-04-15</DATE>
+ </REFSECT2INFO>
+ <TITLE>
+ Outputs
+ </TITLE>
+ <PARA>
+ </PARA>
+ <VARIABLELIST>
+ <VARLISTENTRY>
+ <TERM>
+ </TERM>
+ <LISTITEM>
+ <PARA>
+ <VARIABLELIST>
+ <VARLISTENTRY>
+ <TERM>
+ <ReturnValue>CREATEDB</ReturnValue>
+ </TERM>
+ <LISTITEM>
+ <PARA>
+ Message returned if the command completes successfully.
+ </PARA>
+ </LISTITEM>
+ </VARLISTENTRY>
+ <VARLISTENTRY>
+ <TERM>
+ <ReturnValue>WARN: createdb: database "<replaceable class="parameter">name</replaceable>" already exists.</ReturnValue>
+ </TERM>
+ <LISTITEM>
+ <PARA>
+ This occurs if <replaceable class="parameter">database</replaceable> specified already exists.
+ </PARA>
+ </LISTITEM>
+ </VARLISTENTRY>
+ <VARLISTENTRY>
+ <TERM>
+ <ReturnValue>ERROR: Unable to create database directory <replaceable class="parameter">directory</replaceable>
+</ReturnValue>
+ </TERM>
+ <LISTITEM>
+ <PARA>
+There was a problem with creating the required directory; this operation will
+ need permissions for the <literal>postgres</literal> user on the specified location.
+ </PARA>
+ </LISTITEM>
+ </VARLISTENTRY>
+ </variablelist>
+ </LISTITEM>
+ </VARLISTENTRY>
+ </VARIABLELIST>
+ </REFSECT2>
+ </REFSYNOPSISDIV>
+
+ <REFSECT1 ID="R1-SQL-CREATEDATABASE-1">
+ <REFSECT1INFO>
+ <DATE>1998-04-15</DATE>
+ </REFSECT1INFO>
+ <TITLE>
+ Description
+ </TITLE>
+ <PARA>
+ CREATE DATABASE creates a new PostgreSQL database.
+ The creator becomes the administrator of the new database.
+ </PARA>
+
+ <REFSECT2 ID="R2-SQL-CREATEDATABASE-3">
+ <REFSECT2INFO>
+ <DATE>1998-04-15</DATE>
+ </REFSECT2INFO>
+ <TITLE>
+ Notes
+ </TITLE>
+ <PARA>
+ CREATE DATABASE statement is a PostgreSQL language extension.
+ </PARA>
+ <para>
+ Refer to DROP DATABASE statement to remove a database.
+ </para>
+ </REFSECT2>
+
+ <REFSECT1 ID="R1-SQL-CREATEDATABASE-2">
+ <TITLE>
+ Usage
+ </TITLE>
+ <PARA>
+ To create a new database:
+ </PARA>
+ <ProgramListing>
+ CREATE DATABASE lusiadas;
+ </ProgramListing>
+ <PARA>
+ To create a new database in <filename>~/private_db</filename>:
+ </PARA>
+ <ProgramListing>
+ $ mkdir private_db
+ $ initlocation ~/private_db
+ <computeroutput>Creating Postgres database system directory /home/olly/private_db/base</computeroutput>
+
+ $ chmod a+rx private_db
+ $ chmod a+rwx private_db/base
+ $ psql
+ <computeroutput>Welcome to the POSTGRESQL interactive sql monitor:
+ Please read the file COPYRIGHT for copyright terms of POSTGRESQL
+
+ type \? for help on slash commands
+ type \q to quit
+ type \g or terminate with semicolon to execute query
+ You are currently connected to the database: template1
+
+ template1=></computeroutput> <userinput>create database elsewhere with location = '/home/olly/private_db';</userinput>
+ <computeroutput>CREATEDB</computeroutput>
+ </ProgramListing>
+ </REFSECT1>
+
+ <REFSECT1 ID="R1-SQL-CREATEDATABASE-3">
+ <TITLE>
+ Bugs
+ </TITLE>
+ <PARA>
+ Where an ordinary user cannot change the ownership of files to other users
+ (which is correct from a security point of view), there is no easy way
+ to give the postgres backend access to files in a database at a
+ non-standard location without
+ giving similar access to all users. The situation shown in the usage
+ example makes <filename>/home/olly/private_db</filename> world-accessible.
+ </PARA>
+ <para>
+ If, on the other hand, the user gets the system administrator to give
+ file ownership to the <literal>postgres</literal> superuser and restrict access, he will
+ then be unable to delete the <filename><replaceable>directory</replaceable>/base</filename> directory.
+ </para>
+ <comment>
+ initlocation does not create a PG_VERSION file in the specified location.
+ How will PostgreSQL handle the situation if it is upgraded to an
+ incompatible database version?
+ </comment>
+ </refsect1>
+
+ <REFSECT1 ID="R1-SQL-CREATEDATABASE-4">
+ <TITLE>
+ Compatibility
+ </TITLE>
+ <PARA>
+ </PARA>
+
+ <REFSECT2 ID="R2-SQL-CREATEDATABASE-4">
+ <REFSECT2INFO>
+ <DATE>1998-04-15</DATE>
+ </REFSECT2INFO>
+ <TITLE>
+ SQL92
+ </TITLE>
+ <PARA>
+ There is no <command>CREATE DATABASE</command> statement on SQL92.
+ </PARA>
+ <para>
+ The equivalent command in standard SQL is <command>CREATE SCHEMA</command>.
+ </para>
+ </refsect2>
+ </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:
+-->