====== 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)