Inhaltsverzeichnis

PostgreSQL 9.5.2

> psql -V
psql (PostgreSQL) 9.5.20

> su - pgsql

> psql -U pgsql -l ; echo "\dg" | psql -U pgsql postgres

PostgreSQL 9.5.2 (FreeBSD 10.3-RELEASE)

Installation von PostgreSQL 9.5 auf FreeBSD 10.3-RELEASE

Zeichensatz prüfen, ich möchte die DB mit dem Zeichensatz "de_DE.UTF-8" betreiben, deshalb überprüfe ich, ob es den im System gibt:

> locale -a | fgrep de_DE.UTF-8
de_DE.UTF-8

…wie wir sehen, gibt es ihn im System… :-)

Installation:

> pkg install databases/postgresql95-server

Vorbereitung:

> less /usr/local/share/doc/postgresql/README-server

> vi /etc/login.conf
### deutsch
german|German Users Accounts:\
        :charset=UTF-8:\
        :lang=de_DE.UTF-8:\
        :setenv=LC_COLLATE=C:\
        :tc=default:

> vi /etc/rc.conf
postgresql_enable="YES"
#  postgresql_data="/usr/local/pgsql/data"
postgresql_data="/home/pgsql/data"
postgresql_class="german"

einmalige Initialisierung > /usr/local/etc/rc.d/postgresql initdb

sollte die Initialisierung schief gehen:

Die Dateien, die zu diesem Datenbanksystem gehören, werden dem Benutzer
"pgsql" gehören. Diesem Benutzer muss auch der Serverprozess gehören.

Der Datenbankcluster wird mit folgenden Locales initialisiert werden:
  COLLATE:  C
  CTYPE:    de_DE.ISO8859-15
  MESSAGES: de_DE.ISO8859-15
  MONETARY: de_DE.ISO8859-15
  NUMERIC:  de_DE.ISO8859-15
  TIME:     de_DE.ISO8859-15
initdb: unpassende Kodierungen
Die von Ihnen gewählte Kodierung (UTF8) und die von der gewählten
Locale verwendete Kodierung (LATIN9) passen nicht zu einander. Das
würde in verschiedenen Zeichenkettenfunktionen zu Fehlverhalten
führen. Starten Sie initdb erneut und geben Sie entweder keine
Kodierung explizit an oder wählen Sie eine passende Kombination.

dann kann man das auch so machen:

> su - pgsql

$ export LANG=de_DE.UTF-8
$ vi .profile
LANG=de_DE.UTF-8
export LANG
MM_CHARSET=UTF-8
export MM_CHARSET

$ echo $LANG
de_DE.UTF-8

$ initdb -D /home/pgsql/data
Die Dateien, die zu diesem Datenbanksystem gehören, werden dem Benutzer
„pgsql“ gehören. Diesem Benutzer muss auch der Serverprozess gehören.

Der Datenbankcluster wird mit folgenden Locales initialisiert werden:
  COLLATE:  C
  CTYPE:    de_DE.UTF-8
  MESSAGES: de_DE.UTF-8
  MONETARY: de_DE.UTF-8
  NUMERIC:  de_DE.UTF-8
  TIME:     de_DE.UTF-8
Die Standarddatenbankkodierung wurde entsprechend auf „UTF8“ gesetzt.
Die Standardtextsuchekonfiguration wird auf „german“ gesetzt.

Datenseitenprüfsummen sind ausgeschaltet.

erzeuge Verzeichnis /home/pgsql/data ... ok
erzeuge Unterverzeichnisse ... ok
wähle Vorgabewert für max_connections ... 100
wähle Vorgabewert für shared_buffers ... 128MB
wähle Implementierung von dynamischem Shared Memory ... posix
erzeuge Konfigurationsdateien ... ok
erzeuge Datenbank template1 in /home/pgsql/data/base/1 ... ok
initialisiere pg_authid ... ok
initialisiere Abhängigkeiten ... ok
erzeuge Systemsichten ... ok
lade Systemobjektbeschreibungen ... ok
erzeuge Sortierfolgen ... ok
erzeuge Konversionen ... ok
erzeuge Wörterbücher ... ok
setze Privilegien der eingebauten Objekte ... ok
erzeuge Informationsschema ... ok
lade Serversprache PL/pgSQL ... ok
führe Vacuum in Datenbank template1 durch ... ok
kopiere template1 nach template0 ... ok
kopiere template1 nach postgres ... ok
synchronisiere Daten auf Festplatte ... ok

WARNUNG: Authentifizierung für lokale Verbindungen auf „trust“ gesetzt
Sie können dies ändern, indem Sie pg_hba.conf bearbeiten oder beim
nächsten Aufruf von initdb die Option -A, oder --auth-local und
--auth-host, verwenden.

Erfolg. Sie können den Datenbankserver jetzt mit

    pg_ctl -D /home/pgsql/data -l logdatei start

starten.
$ exit

damit jeder Benutzer aus dem LAN (192.168.1.0/24) auf jede Datenbank zugreifen darf:

> vi /home/pgsql/data/pg_hba.conf
...
# TYPE  DATABASE        USER            ADDRESS                 METHOD
...
host    all             all             192.168.1.0/24          trust
...

damit die Datenbank aus dem LAN (192.168.1.0/24) erreichbar ist:

> vi /home/pgsql/data/postgresql.conf
...
listen_addresses = '*'
...
> /usr/local/etc/rc.d/postgresql status
pg_ctl: kein Server läuft
> service postgresql start
LOG:  Logausgabe nach stderr endet
TIPP:  Die weitere Logausgabe geht an Logziel „syslog“.
> service postgresql status
pg_ctl: Server läuft (PID: 96773)
/usr/local/bin/postgres "-D" "/home/pgsql/data"
> pg_config 
BINDIR = /usr/local/bin
DOCDIR = /usr/local/share/doc/postgresql
HTMLDIR = /usr/local/share/doc/postgresql
INCLUDEDIR = /usr/local/include
PKGINCLUDEDIR = /usr/local/include/postgresql
INCLUDEDIR-SERVER = /usr/local/include/postgresql/server
LIBDIR = /usr/local/lib
PKGLIBDIR = /usr/local/lib/postgresql
LOCALEDIR = /usr/local/share/locale
MANDIR = /usr/local/man
SHAREDIR = /usr/local/share/postgresql
SYSCONFDIR = /usr/local/etc/postgresql
PGXS = /usr/local/lib/postgresql/pgxs/src/makefiles/pgxs.mk
CONFIGURE = '--with-libraries=/usr/local/lib' '--with-includes=/usr/local/include' '--enable-thread-safety' '--disable-debug' '--enable-nls' '--without-pam' '--with-openssl' '--without-gssapi' '--prefix=/usr/local' '--localstatedir=/var' '--mandir=/usr/local/man' '--infodir=/usr/local/info/' '--build=amd64-portbld-freebsd10.1' 'build_alias=amd64-portbld-freebsd10.1' 'CC=cc' 'CFLAGS=-O2 -pipe  -fstack-protector -fno-strict-aliasing' 'LDFLAGS= -L/usr/local/lib -lpthread  -fstack-protector' 'LIBS=' 'CPPFLAGS=' 'CPP=cpp' 'LDFLAGS_SL='
CC = cc
CPPFLAGS = -I/usr/local/include -I/usr/local/include
CFLAGS = -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement -Wendif-labels -Wmissing-format-attribute -Wformat-security -fno-strict-aliasing -fwrapv -Wno-unused-command-line-argument -O2 -pipe  -fstack-protector -fno-strict-aliasing
CFLAGS_SL = -fPIC -DPIC
LDFLAGS = -L../../../src/common -L/usr/local/lib -lpthread -fstack-protector -L/usr/local/lib -Wl,--as-needed -Wl,-R'/usr/local/lib'
LDFLAGS_EX = 
LDFLAGS_SL = 
LIBS = -lpgcommon -lpgport -lintl -lssl -lcrypto -lz -lreadline -lcrypt -lm 
VERSION = PostgreSQL 9.5.2
> psql -U pgsql -l
                                 Liste der Datenbanken
   Name    | Eigentümer | Kodierung | Sortierfolge | Zeichentyp  | Zugriffsprivilegien 
-----------+------------+-----------+--------------+-------------+---------------------
 postgres  | pgsql      | UTF8      | C            | de_DE.UTF-8 | 
 template0 | pgsql      | UTF8      | C            | de_DE.UTF-8 | =c/pgsql           +
           |            |           |              |             | pgsql=CTc/pgsql
 template1 | pgsql      | UTF8      | C            | de_DE.UTF-8 | =c/pgsql           +
           |            |           |              |             | pgsql=CTc/pgsql
(3 Zeilen)