openbsd-ports/databases/postgresql/files/README.OpenBSD
mbalmer 090a0271f4 Give slightly better advice on KerberosV usage.
From Bioern Sandell, <biorn@chalmers.se>, thanks.
2006-10-31 06:50:24 +00:00

121 lines
4.3 KiB
Plaintext

Using PostgreSQL in an OpenBSD environment
At least two different accounts are involved when working with PostgreSQL:
One is an OpenBSD userid, '_posgresql', which is used as the userid of files
that are part of PostgreSQL. The other, usually named 'postgres', is not an
OpenBSD userid, i.e. you will not find it in /etc/passwd, but an account
internal to the database system. The 'postgres' account is called the dba
account (database administrator) and is created when a new database is
initialized using the initdb command.
If you are installing PostgreSQL for the first time, you have to create
a default database first. In the following example we install a database
in /var/postgresql/data with a dba account 'postgres' and md5 authentication.
We will be prompted for a password to protect the dba account:
# su - _postgresql
$ mkdir /var/postgresql/data
$ initdb -D /var/postgresql/data -U postgres -A md5 -W
It is strongly advised that you do not work with the postgres dba account
other than creating more users and/or databases or for administrative task.
Use the PostgreSQL permission system to make sure that a database is only
accessed by programs/users that have the right to do so.
Please consult the PostgreSQL website for more information, especially when
you are upgrading an existing database installation.
Auto Start and Stop
To start PostgreSQL at boot and shut it down when the system shuts down,
add the following lines to /etc/rc.local and /etc/rc.shutdown, respectively:
/etc/rc.local:
if [ -x !!PREFIX!!/bin/pg_ctl ]; then
su -l _postgresql -c "nohup !!PREFIX!!/bin/pg_ctl start \
-D /var/postgresql/data -l /var/postgresql/logfile \
-o '-D /var/postgresql/data'"
echo -n ' postgresql'
fi
/etc/rc.shutdown:
if [ -f /var/postgresql/data/postmaster.pid ]; then
su -l _postgresql -c "!!PREFIX!!/bin/pg_ctl stop -m fast \
-D /var/postgresql/data"
rm -f /var/postgresql/data/postmaster.pid
fi
Network Connections and Tuning
To allow connections over TCP (and other options) edit the file:
/var/postgresql/data/postgresql.conf
and also edit the pg_hba.conf (in the same directory) making the
appropriate changes to allow connection from your network.
The default sizes in the GENERIC kernel for SysV semaphores
are not really large enough for a database with more than a
handful of connections. A server running such a database should
have at least the following in /etc/sysctl.conf:
kern.seminfo.semmni=256
kern.seminfo.semmns=2048
To serve a large number of connections (>250), you may also need
to increase the maximum shared memory segment size, on the i386
try:
kern.shminfo.shmmax=50331648 # this is 48MB.
# default on i386 is 32MB
# other archs will vary
These numbers should be tuned depending on system use. You will also
need to tune the values in the postgresql.conf file to increase the
number of connections to the backend.
By default, the _postgresql user, and so the postmaster and backend
processes run in the login(1) class of "daemon". On a busy server,
it may be advisable to put the _postgresql user and processes in
their own login(1) class with tuned resources, such as more open
file descriptors etc.
For example, add this to the login.conf(5) file:
postgresql:\
:openfiles-cur=768:\
:tc=daemon:
Rebuild the login.conf.db file if necessary:
# cap_mkdb /etc/login.conf
Change the login class with either vipw(8) or chsh(8).
For more than about 250 connections, these numbers should be
increased. Please report any changes and experiences to the package
maintainers so that we can update this file for future versions.
Kerberos authentication
By default the postgresql server requires it's own krb5.keytab file. It
should be readable only by the _postgresql user. The default location of
the file is '/etc/postgresql/krb5.keytab' but is tunable by setting the
krb_server_keyfile line in postgresql.conf.
To generate the keytab:
# mkdir /etc/postgresql
# ktutil -k /etc/postgresql/krb5.keytab get postgres/server.domain
# chown _postgresql:_postgresql /etc/postgresql/krb5.keytab
Clients/Frontends
Many applications can use the PostgreSQL database right away. To faciliate
administration of a PostgreSQL database, two clients are notable:
www/phppgadmin A web based user interface that uses PHP5
databases/pgadmin3 A graphical user interface that uses wxWidgets