start.sgml 13.7 KB
Newer Older
1
<!--
2
$Header: /cvsroot/pgsql/doc/src/sgml/start.sgml,v 1.11 2000/05/02 20:01:52 thomas Exp $
3 4
-->

5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
 <chapter id="start">
  <title>Getting Started</title>

  <abstract>
   <para>
    How to begin work with <productname>Postgres</productname> for a new user.
   </para>
  </abstract>

  <para>
   Some  of the steps required to use <productname>Postgres</productname>
   can be performed by any Postgres user, and some must be done by
   the site database administrator.  This site administrator 
   is the person who installed the  software,  created
   the  database  directories  and  started the
   <application>postmaster</application>
   process.  This person does not  have  to  be  the  Unix
22
   superuser ("root")
23 24 25 26 27 28 29 30 31 32 33 34 35 36
   or the computer system administrator; a person can install and use
   <productname>Postgres</productname> without any special accounts or 
   privileges.
  </para>

  <para>
   If you are installing <productname>Postgres</productname> yourself, then
   refer to the Administrator's Guide for instructions on
   installation, and return
   to this guide when the installation is complete.
  </para>

  <para>
   Throughout this manual, any examples  that  begin  with
37
   the  character  "<literal>%</literal>" are commands that should be typed
38
   at the Unix shell prompt.  Examples that begin with the
39
   character "<literal>*</literal>" are commands in the Postgres query 
40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78
   language, Postgres <acronym>SQL</acronym>.
  </para>

  <sect1>
   <title>Setting Up Your Environment</title>

   <para>
    This section discusses how to set up
    your own environment  so  that  you  can  use  frontend
    applications.  We assume <productname>Postgres</productname> has
    already been 
    successfully installed and started; refer to the Administrator's Guide
    and the installation  notes
    for how to install Postgres.
   </para>

   <para>
    <productname>Postgres</productname> is a client/server
    application. As a user,
    you only need access to the client portions of the installation
    (an example
    of a client application is the interactive monitor
    <application>psql</application>).
    For simplicity,
    we will assume that <productname>Postgres</productname> has been
    installed in the
    directory  <filename>/usr/local/pgsql</filename>.   Therefore, wherever
    you see the directory <filename>/usr/local/pgsql</filename> you  should
    substitute  the name of the directory where
    <productname>Postgres</productname> is
    actually installed.
    All <productname>Postgres</productname> commands are installed  in
    the directory
    <filename>/usr/local/pgsql/bin</filename>.   Therefore,  you should add
    this directory to your shell command path.  If you  use
    a variant of the Berkeley C shell, such as csh or tcsh,
    you would add

    <programlisting>
79
% set path = ( /usr/local/pgsql/bin path )
80 81 82 83 84 85 86 87
    </programlisting>

    in the <filename>.login</filename> file in your home directory.
    If you use
    a  variant  of  the  Bourne  shell, such as sh, ksh, or
    bash, then you would add

    <programlisting>
88
% PATH=/usr/local/pgsql/bin:$PATH
89
% export PATH
90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155
    </programlisting>

    to the .profile file in your home directory.
    From now on, we will assume that  you  have  added  the
    <productname>Postgres</productname>  bin  directory to your path.
    In addition, we
    will make frequent reference to <quote>setting a shell  
     variable</quote>  or  <quote>setting an environment
     variable</quote> throughout
    this document.  If you did  not  fully  understand  the
    last  paragraph  on  modifying  your  search  path, you
    should consult the Unix manual pages that describe your
    shell before going any further.
   </para>

   <para>
    If your site administrator has not set things up in the
    default  way,  you may have some more work to do.  For example, if
    the database
    server machine is a remote machine, you
    will need to set the <acronym>PGHOST</acronym> environment
    variable to the name
    of the database server machine.   The  environment  variable
    <acronym>PGPORT</acronym> may also have to be set.  The bottom
    line is this: if
    you try to start an application  program  and  it  complains
    that it cannot connect to the <application>postmaster</application>,
    you should immediately consult your site administrator to make
    sure that your
    environment is properly set up.
   </para>

  </sect1>

  <sect1>
   <title>Starting the Interactive Monitor (psql)</title>

   <para>
    Assuming that  your  site  administrator  has  properly
    started  the  <application>postmaster</application>  process and
    authorized you to
    use the database, you (as a user) may begin to start up
    applications.   As previously mentioned, you should add
    <filename>/usr/local/pgsql/bin</filename> to your  shell  search path.
    In  most  cases,  this  is all you should have to do in
    terms of preparation.
   </para>

   <para>
    Two different styles of connections
    are supported. The site administrator will have chosen to allow
    TCP/IP network connections
    or will have restricted database access to local (same-machine)
    socket connections only.
    These choices become significant if you encounter problems in
    connecting to a database, since you will want to confirm that you
    are choosing an allowed connection option.
   </para>

   <para>
    If  you get the following error message from a
    <productname>Postgres</productname>
    command (such as <application>psql</application> or
    <application>createdb</application>):

    <programlisting>
156 157 158 159
% psql template1
Connection to database 'postgres' failed.
connectDB() failed: Is the postmaster running and accepting connections
    at 'UNIX Socket' on port '5432'?
160
    </programlisting>
161

162
    or
163

164
    <programlisting>
165 166 167 168
% psql -h localhost template1
Connection to database 'postgres' failed.
connectDB() failed: Is the postmaster running and accepting TCP/IP
    (with -i) connections at 'localhost' on port '5432'?
169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192
    </programlisting>

    it is usually because

    <itemizedlist mark="bullet" spacing="compact">
     <listitem>
      <para>
       the <application>postmaster</application>  is  not  running,
       or
      </para>
     </listitem>

     <listitem>
      <para>
       you are attempting to connect to the wrong server host.
      </para>
     </listitem>
    </itemizedlist>
   </para>

   <para>
    If you get the following error message:

    <programlisting>
193
FATAL 1:Feb 17 23:19:55:process userid (2360) != database owner (268)
194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233
    </programlisting>

    it means that the site administrator started the
    <application>postmaster</application>
    as  the  wrong user.  Tell him to restart it as
    the <productname>Postgres</productname> superuser.
   </para>
  </sect1>

  <sect1>
   <title>Managing a Database</title>

   <para>
    Now that <productname>Postgres</productname> is up and running we
    can create  some
    databases  to  experiment  with.  Here, we describe the
    basic commands for managing a database.
   </para>

   <para>
    Most <productname>Postgres</productname>
    applications assume that the database name, if not specified, is
    the same as the name on your computer
    account.
   </para>

   <para>
    If your database administrator has set up your account without
    database creation privileges,
    then she should have told you what the name of your database is. If
    this is the case, then you
    can skip the sections on creating and destroying databases.
   </para>

   <sect2>
    <title>Creating a Database</title>

    <para>
     Let's say you want to create  a  database  named
     <database>mydb</database>.
234
     You can do this with the following command:
235
     <programlisting>
236
% createdb mydb
237 238 239 240 241 242 243 244
     </programlisting>
    </para>

    <para>
     If you do not have the privileges required to create a database,
     you will see
     the following:
     <programlisting>
245 246 247
% createdb mydb
WARN:user "your username" is not allowed to create/destroy databases
createdb: database creation failed on mydb.
248 249
     </programlisting>
    </para>
250

251 252 253
    <para>
     <productname>Postgres</productname>  allows  you to create any
     number of databases
254
     at a  given  site  and  you  automatically  become  the
255 256
     database  administrator  of  the database you just created.
     Database names must  have  an  alphabetic  first
257 258
     character and are limited to 32 characters in length.
     Not  every  user has authorization to become a database
259 260
     administrator.  If <productname>Postgres</productname> refuses to 
     create databases
261 262 263
     for you, then the site administrator needs to grant you
     permission to  create  databases.   Consult  your  site
     administrator if this occurs.
264 265
    </para>
   </sect2>
266

267 268
   <sect2>
    <title>Accessing a Database</title>
269

270
    <para>
271 272 273
     Once you have constructed a database, you can access it
     by:

274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314
     <itemizedlist spacing="compact" mark="bullet">
      <listitem>
       <para>
	Running the <productname>Postgres</productname>  terminal
	monitor  programs
	(e.g. <application>psql</application>) which allows you to
	interactively
        enter, edit, and execute <acronym>SQL</acronym> commands.
       </para>
      </listitem>

      <listitem>
       <para>
	Using an existing native frontend tool like
	<application>pgaccess</application> or
	<application>ApplixWare</application> (via
	<acronym>ODBC</acronym>) to create and manipulate a 
	database.
       </para>
      </listitem>

      <listitem>
       <para>
	Using a language like perl or tcl which has a supported
	interface for <productname>Postgres</productname>. Some of
	these languages also have convenient and powerful GUI toolkits 
	which can help you construct custom
	applications. <application>pgaccess</application>, mentioned
	above, is one such application written in tk/tcl and can be
	used as an example.
       </para>
      </listitem>

      <listitem>
       <para>
	Writing a <acronym>C</acronym>  program  using
	the  LIBPQ  subroutine
        library.   This  allows  you  to submit
	<acronym>SQL</acronym> commands
        from <acronym>C</acronym> and get answers and
	status messages  back  to
315
        your  program.   This interface is discussed further
316
        in <citetitle>The PostgreSQL Programmer's Guide</citetitle>.
317 318 319
       </para>
      </listitem>
     </itemizedlist>
320

321 322 323
     You might want to start up <application>psql</application>, 
     to try out the examples in this manual.
     It can be activated for the <database>mydb</database>
324
     database by typing the command:
325
     <programlisting>
326
% psql mydb
327
     </programlisting>
328 329

     You will be greeted with the following message:
330
     <programlisting>
331 332 333 334 335 336 337 338 339
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

mydb=>
340 341
     </programlisting>
    </para>
342

343 344 345
    <para>
     This prompt indicates that the terminal monitor is listening
     to you and that you can type <acronym>SQL</acronym> queries into a
346
     workspace maintained by the terminal monitor.
347 348
     The <application>psql</application> program responds to escape
     codes  that  begin
349
     with  the  backslash  character, "<literal>\</literal>"  For example, you
350
     can get help on the syntax of various
351 352 353
     <productname>Postgres</productname> <acronym>SQL</acronym>
     commands by typing:
     <programlisting>
354
mydb=> \h
355 356
     </programlisting>
    </para>
357

358
    <para>
359 360
     Once  you  have finished entering your queries into the
     workspace, you can pass the contents of  the  workspace
361 362
     to the <productname>Postgres</productname> server by typing:
     <programlisting>
363
mydb=> \g
364
     </programlisting>
365 366

     This  tells  the  server  to process the query.  If you
367
     terminate your query with a semicolon, the  "<literal>\g</literal>" is  not
368
     necessary.
369 370
     <application>psql</application> will automatically process
     semicolon terminated queries.
371 372
     To read queries from a file,  say  myFile,  instead  of
     entering them interactively, type:
373
     <programlisting>
374
mydb=> \i fileName
375
     </programlisting>
376

377 378
     To get out of <application>psql</application> and return to Unix, type
     <programlisting>
379
mydb=> \q
380
     </programlisting>
381

382 383 384 385
     and  <application>psql</application>  will  quit  and  return
     you to your command
     shell. (For more escape codes, type <command>\h</command> at  the 
     monitor prompt.)
386
     White  space  (i.e.,  spaces, tabs and newlines) may be
387 388
     used freely in <acronym>SQL</acronym> queries.  Single-line
     comments  are  denoted  by
389
     "<literal>--</literal>".   Everything  after the dashes up to the end of the
390
     line is ignored. Multiple-line comments, and comments within a line,
391
     are denoted by "<literal>/* ... */</literal>".
392 393 394 395 396 397 398
    </para>
   </sect2>

   <sect2>
    <title>Destroying a Database</title>

    <para>
399
     If you are the database administrator for the  database
400 401 402
     <database>mydb</database>,  you can destroy it using the
     following Unix command:
     <programlisting>
403
% dropdb mydb
404
     </programlisting>
405
     This action physically removes all of  the  Unix  files
406 407
     associated  with  the database and cannot be undone, so
     this should only be done with a  great  deal  of  forethought.
408 409 410
    </para>
   </sect2>
  </sect1>
411

412
 </chapter>
413 414 415

<!-- Keep this comment at the end of the file
Local variables:
416
mode:sgml
417 418 419 420 421 422 423 424 425
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
426
sgml-local-catalogs:("/usr/lib/sgml/catalog")
427 428 429
sgml-local-ecat-files:nil
End:
-->