Dienst PostgreSQL startet nicht richtig

Hallo zusammen,

ich arbeite derzeit mit openSUSE 12.2 mit allen aktuellen Patches, habe aber das Problem, dass ich PostgreSQL nicht richtig zum laufen bekomme. In Yast wird Postgres als Aktiviert: Ja* markiert (Runlevel Editor). Ich versuche nun ein Perl-Skript namens “SQL Ledger” zum Laufen zu bekommen und dort bekomme ich die Fehlermeldung, dass der Server wohl nicht zu laufen scheint:

Error! **
could not connect to server: Connection refused
Is the server running on host “localhost” (::1) and accepting
TCP/IP connections on port 5432?**

Ich habe die Problematik des Serverdienstes unter folgendem Link gemeldet: Access Denied

Funktioniert PostgreSQL bei euch einwandfrei?

Hast Du geprüft, ob postgresql überhaupt läuft?

ps -ef | grep postgres

Und wenn, ob es auf TCP lauscht?

netstat -anp | grep 5432

Ansonsten muss man einen neu installierten postgresql-Server erstmal so einrichten, dass andere User als “postgres” überhaupt drauf zugreifen dürfen.

PostgreSQL: Documentation: 9.1: PostgreSQL 9.1.8 Documentation

Da kommt außer dem grep-Befehl nichts weiter. Demnach läuft postgresql auch nicht.


mwagner@extensa5230e:~> ps -ef | grep postgres
mwagner   2008  1997  0 10:35 pts/0    00:00:00 grep --color=auto postgres

Dann habe ich noch folgendes versucht und bekomme folgende Meldung.

extensa5230e:/home/mwagner # rcpostgresql start
redirecting to systemctl
Job failed. See system journal and 'systemctl status' for details.

Auf jeden Fall danke für die Rückmeldung. Ich bekomme bei “systemctl status” folgende Meldung:


extensa5230e:/home/mwagner # systemctl status
Too few arguments.
extensa5230e:/home/mwagner # systemctl postgresql status
Unknown operation postgresql

Es sieht nicht so aus,als ob es schon systemd-Unitfiles für PostgreSQL gäbe. Es wird faktisch alles über ein herkömmliches init-Skript gemacht (/etc/init.d/postgres).
Daher klappt das mit systemctl nicht. Statt dessen (als root):

/etc/init.d/postgresql status

Um mal weiterzukommen:

Schau ins Verzeichnis /var/lib/pgsql, was dort an Unterverzeichnissen usw. rumsteht.
Bei mir gibt es da das Verzeichnis “data”, wo per default die Datenbank liegt, sowie die Datei initlog, in der die Ersteinrichtung beim Installieren bzw. dem ersten Start vermerkt ist.
In “data” solltest Du die Konfigurationsdateien (.conf) und ein paar Logs finden, sowie diverse Unterverzeichnisse.
Von denen ist “pg_log” interessant, weil da (per default) die Logfiles stehen (postgres
.log).

Irgendwo in diesen Verzeichnissen und Dateien sollte sich hoffentlich ein Hinweis finden, warum es bei Dir nicht läuft.

extensa5230e:/home/mwagner # /etc/init.d/postgresql status
redirecting to systemctl
postgresql.service - LSB: Start the PostgreSQL master daemon
          Loaded: loaded (/etc/init.d/postgresql)
          Active: failed (Result: exit-code) since Wed, 13 Mar 2013 08:27:45 +0100; 23min ago
         Process: 843 ExecStart=/etc/init.d/postgresql start (code=exited, status=1/FAILURE)
          CGroup: name=systemd:/system/postgresql.service

Mar 13 08:27:41 extensa5230e.site su[1037]: (to postgres) root on none
Mar 13 08:27:45 extensa5230e.site postgresql[843]: Starting PostgreSQL 9.1.8 ...
Mar 13 08:27:45 extensa5230e.site postgresql[843]: [27B blob data]
Mar 13 08:27:45 extensa5230e.site postgresql[843]: ..failed

sowie die Datei initlog, in der die Ersteinrichtung beim Installieren bzw. dem ersten Start vermerkt ist.

Dort habe ich einen Hinweis gefunden und versucht, postgres wie im Log beschrieben zu starten. Es kommt keine Rückmeldung aber die Fehlermeldung “Could not connect” kommt nach wie vor.

 postgres@extensa5230e:/home/mwagner> /usr/bin/postgres -D /var/lib/pgsql/data

Mit den init.d-Skripten kommt folgendes:

extensa5230e:/home/mwagner # /etc/init.d/postgresql start
redirecting to systemctl
Job failed. See system journal and 'systemctl status' for details.

In “data” solltest Du die Konfigurationsdateien (.conf) und ein paar Logs finden, sowie diverse Unterverzeichnisse.
Von denen ist “pg_log” interessant, weil da (per default) die Logfiles stehen (postgres
.log).

Irgendwo in diesen Verzeichnissen und Dateien sollte sich hoffentlich ein Hinweis finden, warum es bei Dir nicht läuft.

“data” solltest Du die Konfigurationsdateien (.conf) und ein paar Logs finden, sowie diverse Unterverzeichnisse.
Von denen ist “pg_log” interessant, weil da (per default) die Logfiles stehen (postgres
.log).
[/QUOTE]

Kannst Du mit folgendem etwas anfangen?

2013-03-13 09:00:18 CET   LOG:  Authentifizierungsoption nicht im Format name=wert: sameuser
        
2013-03-13 09:00:18 CET   ZUSAMMENHANG:  Zeile 80 in Konfigurationsdatei »/var/lib/pgsql/data/pg_hba.conf«
2013-03-13 09:00:18 CET   LOG:  Authentifizierungsoption nicht im Format name=wert: sameuser
        
2013-03-13 09:00:18 CET   ZUSAMMENHANG:  Zeile 82 in Konfigurationsdatei »/var/lib/pgsql/data/pg_hba.conf«
2013-03-13 09:00:18 CET   LOG:  Authentifizierungsoption nicht im Format name=wert: sameuser
        
2013-03-13 09:00:18 CET   ZUSAMMENHANG:  Zeile 84 in Konfigurationsdatei »/var/lib/pgsql/data/pg_hba.conf«
2013-03-13 09:00:18 CET   FATAL:  konnte pg_hba.conf nicht laden

Ich habe auch mal die letzten Zeilen meiner pg_hba.conf angehängt:

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     ident sameuser
# IPv4 local connections:
host    all             all             127.0.0.1/32            ident sameuser
# IPv6 local connections:
host    all             all             ::1/128                 ident sameuser
# Allow replication connections from localhost, by a user with the
# replication privilege.
#local   replication     postgres                                peer
#host    replication     postgres        127.0.0.1/32            ident
#host    replication     postgres        ::1/128                 ident

Bei mir sieht die pg_hba.conf an der Stelle so aus:

# "local" is for Unix domain socket connections only
local   all             all                                     peer
# IPv4 local connections:
host    all             all             127.0.0.1/32            ident
# IPv6 local connections:
host    all             all             ::1/128                 ident
# Allow replication connections from localhost, by a user with the

“sameuser” sollte eigentlich nur an 2. Stelle stehen (statt des 1. “all”), damit sich der User nur an einer DB anmelden kann, die so heißt, wie er; falls man das möchte. Mach die “saemuser”-Strings bei Dir weg und versuch’s nochmal.

Siehe: PostgreSQL: Documentation: 9.1: The pg_hba.conf File

Ich habe die Verbindungen mal auf “trust” gestellt und jetzt lässt sich der Server einwandfrei starten und ich kann in “SQL Ledger” einen Kontenrahmen anlegen. Danke für deine Hilfe - ich habe den Fehler wirklich in den ganzen systemd-Umstellungen vermutet.