PostgreSQL startet nicht

Alle anderen Fragen und Probleme zur Installation.
philmyer
Neuer Benutzer
Beiträge: 8
Registriert: Fr 14. Mär 2014, 16:09

Re: PostgreSQL startet nicht

Beitrag von philmyer » Mi 19. Mär 2014, 19:21

Merci, bin ein wenig weiter aber noch nicht ganz am Ziel:
Zum Ändern der Dateirechte von data-Dir und var-Dir habe ich mir zuerst Rootrechte mittels 'sudo su root' (su root hat nicht funktioniert) besorgen müssen.
Danach habe ich die Dateirechte der beiden Dir’s data und var mittels 'chmod g=rwx,o=rwx data/var' neu gesetzt.
Weiter habe ich die Dateirechte für postgresql.conf und postmaster.opts im data-Dir auf '-rw-r-xr-x' gesetzt.
Das Starten von PostgreSQL im Verzeichnis '/usr/local/pgsql/bin' mittels './postgres -D /usr/local/pgsql/data' führt zu folgender Meldung:

philipps-mbp:bin philippmeier$ ./postgres -D /usr/local/pgsql/data
2014-03-19 18:31:50 CETFATAL: data directory "/usr/local/pgsql/data" has wrong ownership
2014-03-19 18:31:50 CETHINT: The server must be started by the user that owns the data directory.

Also der Eigentümer des data-Dir wird mit ‚ls –l’ als ‚_postgres’ ausgewiesen. Also habe ich versucht mich als ‚_postgres’-User anzumelden und dann PostgeSQL nochmals zu starten; aber das will auch nicht funktionieren? Also der Wechsel als _postges-User klappt nicht, oder wo liegt hier nun das Problem, dass dieselbe Fehlermeldung erscheint (siehe unten)? Oder wie Du Uwe schriebst "Der Nutzer unter dem etwas läuft ist nicht unbedingt der Besitzer der Datei". Aber wie kriege ich nun den Nutzer des data-Dir raus, wenn dieser nicht _postgres sein soll? Mittels dem vorgeschlagenen 'ps -faux | grep postgres' und 'ps -faux | grep _postgres'? Als Resultat erscheint beide Male 'ps: No user named 'x' '. Also hab ich's mit 'philipps-mbp:pgsql philippmeier$ ps -f -U _postgres' versucht mit folgendem Resultat:

UID PID PPID C STIME TTY TIME CMD
216 77 1 0 10:53am ?? 0:00.77 /usr/local/pgsql/bin/postmaster -D /usr/local/pgsql/data
216 109 77 0 10:53am ?? 0:00.00 postgres: logger process
216 111 77 0 10:53am ?? 0:00.01 postgres: checkpointer process
216 112 77 0 10:53am ?? 0:00.35 postgres: writer process
216 113 77 0 10:53am ?? 0:00.30 postgres: wal writer process
216 114 77 0 10:53am ?? 0:00.90 postgres: autovacuum launcher process
216 115 77 0 10:53am ?? 0:02.70 postgres: stats collector process

Versuch PosgreSQL zu starten als User '_postgres':
philipps-mbp:pgsql philippmeier$ su _postgres
Password:
su: Sorry
philipps-mbp:pgsql philippmeier$ sudo su _postgres
Password:
philipps-mbp:pgsql philippmeier$ pwd
/usr/local/pgsql
philipps-mbp:pgsql philippmeier$ ls
bin data include lib share var
philipps-mbp:pgsql philippmeier$ cd bin
philipps-mbp:bin philippmeier$ ls
clusterdb dropdb initdb pg_ctl pg_receivexlog pg_upgrade postmaster shp2pgsql
createdb droplang pg_basebackup pg_dump pg_resetxlog pg_xlogdump psql vacuumdb
createlang dropuser pg_config pg_dumpall pg_restore pgsql2shp raster2pgsql vacuumlo
createuser ecpg pg_controldata pg_isready pg_standby postgres reindexdb
philipps-mbp:bin philippmeier$ ./postgres -D /usr/local/pgsql/data
2014-03-19 18:44:52 CETFATAL: data directory "/usr/local/pgsql/data" has wrong ownership
2014-03-19 18:44:52 CETHINT: The server must be started by the user that owns the data directory.
philipps-mbp:bin philippmeier$

Versuch PosgreSQL zu starten als User 'postgres':
philipps-mbp:bin philippmeier$ sudo su postgres
su: unknown login: postgres
philipps-mbp:bin philippmeier$

Also hat jemand noch eine Idee? Beste Dank im Voraus! Grüsse Phil

akretschmer
Erfahrener Benutzer
Beiträge: 7683
Registriert: So 29. Okt 2006, 13:35
Wohnort: Kaufbach, Sachsen, Germany, Germany
Kontaktdaten:

Re: PostgreSQL startet nicht

Beitrag von akretschmer » Mi 19. Mär 2014, 19:27

philmyer hat geschrieben:Merci, bin ein wenig weiter aber noch nicht ganz am Ziel:


UID PID PPID C STIME TTY TIME CMD
216 77 1 0 10:53am ?? 0:00.77 /usr/local/pgsql/bin/postmaster -D /usr/local/pgsql/data
216 109 77 0 10:53am ?? 0:00.00 postgres: logger process
216 111 77 0 10:53am ?? 0:00.01 postgres: checkpointer process
216 112 77 0 10:53am ?? 0:00.35 postgres: writer process
216 113 77 0 10:53am ?? 0:00.30 postgres: wal writer process
216 114 77 0 10:53am ?? 0:00.90 postgres: autovacuum launcher process
216 115 77 0 10:53am ?? 0:02.70 postgres: stats collector process


Was willst Du denn noch, läuft doch! ;-)

philmyer
Neuer Benutzer
Beiträge: 8
Registriert: Fr 14. Mär 2014, 16:09

Re: PostgreSQL startet nicht

Beitrag von philmyer » Mi 19. Mär 2014, 21:08

... Mensch, ja klar, wenn unter 'ps -f -U _postgres' was steht, dann läuft PostgreSQL ja auch! Leider war dies ein kurzer Erfolg und beruhte auf pgAdmin3.
Nachdem über die Shell PostgreSQL nicht startete habe ich versucht PostgreSQL mit dem Tool pgAdmin3 zu starten, was mir offenbar gelungen ist, so dass die Abfrage 'ps -f -U _postgres' auf der Shell natürlich das Laufen von PostgreSQL bestätigte (aber gestartet wurde PostgreSQL über pgAdmin3).
Jetzt läuft aber gar nix mehr weder über pgAdmin3 noch über die Shell, obwohl ich für pgAdmin3 auch das richtige Passwort eingegeben habe, was ich über find .pgpass und cat .pgpass kontrolliert habe (siehe am Ende). Offenbar habe ich jetzt alles verschlimmbessert? Das Ziel ist vorerst PostgreSQL über die Shell zum Laufen zu bringen (werde von pgAdmin3 jetzt mal die Finger lassen). Da tut sich aber nach wie vor nix!? Für jeden Hinweis besten Dank im Voraus! Grüsse Phil

PostgreSQL starten über SHELL:
philipps-mbp:bin philippmeier$ sudo su _postgres
Password:
philipps-mbp:bin philippmeier$ ./postgres -D /usr/local/pgsql/data
2014-03-19 20:41:27 CETFATAL: data directory "/usr/local/pgsql/data" has wrong ownership
2014-03-19 20:41:27 CETHINT: The server must be started by the user that owns the data directory.
philipps-mbp:bin philippmeier$ ps -f -U _postgres
UID PID PPID C STIME TTY TIME CMD
philipps-mbp:bin philippmeier$

PostgreSQL starten über pgAdmin3:
kommt nun nach der Eingabe des Passwortes folgende Meldung:
"Ein Fehler ist aufgetreten: Error connecting to the server: could not connect to sever: No such file or directory. Is the server running locally and accepting connections on Unix domain socket "/tmp/.s.PGSQL.5432?"

Last login: Wed Mar 19 20:05:24 on ttys000
philipps-mbp:~ philippmeier$ find .pgpass
.pgpass
philipps-mbp:~ philippmeier$ cat .pgpass
:5432:*:postgres:MEINPASSWORT

akretschmer
Erfahrener Benutzer
Beiträge: 7683
Registriert: So 29. Okt 2006, 13:35
Wohnort: Kaufbach, Sachsen, Germany, Germany
Kontaktdaten:

Re: PostgreSQL startet nicht

Beitrag von akretschmer » Do 20. Mär 2014, 08:06

philmyer hat geschrieben:
PostgreSQL starten über SHELL:
philipps-mbp:bin philippmeier$ sudo su _postgres
Password:
philipps-mbp:bin philippmeier$ ./postgres -D /usr/local/pgsql/data
2014-03-19 20:41:27 CETFATAL: data directory "/usr/local/pgsql/data" has wrong ownership
2014-03-19 20:41:27 CETHINT: The server must be started by the user that owns the data directory.
philipps-mbp:bin philippmeier$ ps -f -U _postgres
UID PID PPID C STIME TTY TIME CMD
philipps-mbp:bin philippmeier$

PostgreSQL starten über pgAdmin3:
kommt nun nach der Eingabe des Passwortes folgende Meldung:
"Ein Fehler ist aufgetreten: Error connecting to the server: could not connect to sever: No such file or directory. Is the server running locally and accepting connections on Unix domain socket "/tmp/.s.PGSQL.5432?"

Last login: Wed Mar 19 20:05:24 on ttys000
philipps-mbp:~ philippmeier$ find .pgpass
.pgpass
philipps-mbp:~ philippmeier$ cat .pgpass
:5432:*:postgres:MEINPASSWORT


Unterscheide bitte zwischen dem eigentlichen Server (PostgreSQL) und dem Client(psql, PGAdmin, PhpPgAdmin, whatever).

Damit sich ein Client mit dem Server verbinden kann gibt es 2 Wege (unter *NIX, unter Kleinweich nur den ersteren):

  • TCP/IP
  • UNIX-Domain-Socket

Dein PGAdmin versucht es über Socket und sucht diesen in /tmp, möglicherweisle legt PostgreSQL den woanders ab. Du kannst in der postgresql.conf mittel unix_socket_directories festlegen, wo er sein soll, bzw. bei einem laufenden System abfragen, wo das ist:

select setting from pg_settings where name = 'unix_socket_directories' ;

philmyer
Neuer Benutzer
Beiträge: 8
Registriert: Fr 14. Mär 2014, 16:09

Re: PostgreSQL startet nicht

Beitrag von philmyer » Do 20. Mär 2014, 14:54

Danke für die Erinnerung Client <-> Server!

Folgende Fehlschläge beim Suchen der Socket-Datei:

1 Versuch: sh-3.2# find / -name tmp -->Anzeige der tmp-dirs
nirgends eine '.s.PGSQL.5432'-Datei (siehe unten, in zwei Verzeichnisse 'Application Support' komme ich nicht rein, da auseinander geschrieben).

2 Versuch: sh-3.2# find / -name .s.PGSQL.5432 -->Anzeige der Socket-Datei (siehe unten)
keine Socket-Datei gefunden

3 Versuch: sh-3.2# select setting from pg_settings where name = 'unix_socket_directories';
sh: syntax error near unexpected token `from'

Was kann ich noch unternehmen (was mache ich falsch) um rauszukriegen, welches das Unix-Socket-Verzeichnis ist? Merci im Voraus. Grüsse Phil






----------------------

1 Versuch liefert:
sh-3.2# find / -name tmp
find: /dev/fd/3: Not a directory
find: /dev/fd/4: Not a directory
/private/tmp
launch-dG8yMv launch-xcXIYb launchd-145.vF5IfZ launchd-380.5kHxMR
/private/var/at/tmp
leer
/private/var/folders/zz/zyxvpxvq6csfxvn_n0000000000000/C/PKInstallSandboxManager/179846A2-081F-4464-8F74-E8625951EA40.sandbox/tmp
leer
/private/var/folders/zz/zyxvpxvq6csfxvn_n0000000000000/C/PKInstallSandboxManager/73E33420-47E5-42F4-AC65-DE62FC0313F1.sandbox/tmp
leer
/private/var/folders/zz/zyxvpxvq6csfxvn_n0000000000000/C/PKInstallSandboxManager/CEE2D20E-6D30-452C-8D63-DCA45822D887.sandbox/tmp
leer
/private/var/spool/cups/tmp
leer
/private/var/tmp
configd-pattern.plist configd-session.plist configd-store.plist launchd
configd-reachability configd-state filesystemui.socket systemstats
/tmp
launch-dG8yMv launch-xcXIYb launchd-145.vF5IfZ launchd-380.5kHxMR
/Users/philippmeier/Library/Application Support/OpenOffice/4/user/extensions/tmp
Verweigert Wechsel, da Application Suppoert nicht zusammengeschrieben
/Users/philippmeier/Library/Application Support/Oracle/Java/Deployment/tmp
Verweigert Wechsel, da Application Suppoert nicht zusammengeschrieben


sh-3.2# pwd
/dev/fd
sh-3.2# ls -l
total 0
crw--w---- 1 philippmeier tty 16, 0 20 Mär 14:35 0
crw--w---- 1 philippmeier tty 16, 0 20 Mär 14:35 1
crw--w---- 1 philippmeier tty 16, 0 20 Mär 14:35 2
dr--r--r-- 1 root wheel 0 20 Mär 11:20 3
dr--r--r-- 1 root wheel 0 20 Mär 11:20 4
dr--r--r-- 1 root wheel 0 20 Mär 11:20 5
sh-3.2#


2. Versuch liefert:
sh-3.2# find / -name .s.PGSQL.5432
find: /dev/fd/3: Not a directory
find: /dev/fd/4: Not a directory
sh-3.2#

sh-3.2# pwd
/dev/fd
sh-3.2# ls -l
total 0
crw--w---- 1 philippmeier tty 16, 0 20 Mär 14:35 0
crw--w---- 1 philippmeier tty 16, 0 20 Mär 14:35 1
crw--w---- 1 philippmeier tty 16, 0 20 Mär 14:35 2
dr--r--r-- 1 root wheel 0 20 Mär 11:20 3
dr--r--r-- 1 root wheel 0 20 Mär 11:20 4
dr--r--r-- 1 root wheel 0 20 Mär 11:20 5
sh-3.2#

akretschmer
Erfahrener Benutzer
Beiträge: 7683
Registriert: So 29. Okt 2006, 13:35
Wohnort: Kaufbach, Sachsen, Germany, Germany
Kontaktdaten:

Re: PostgreSQL startet nicht

Beitrag von akretschmer » Do 20. Mär 2014, 15:39

philmyer hat geschrieben:Danke für die Erinnerung Client <-> Server!

Folgende Fehlschläge beim Suchen der Socket-Datei:

1 Versuch: sh-3.2# find / -name tmp -->Anzeige der tmp-dirs
nirgends eine '.s.PGSQL.5432'-Datei (siehe unten, in zwei Verzeichnisse 'Application Support' komme ich nicht rein, da auseinander geschrieben).

2 Versuch: sh-3.2# find / -name .s.PGSQL.5432 -->Anzeige der Socket-Datei (siehe unten)
keine Socket-Datei gefunden

3 Versuch: sh-3.2# select setting from pg_settings where name = 'unix_socket_directories';
sh: syntax error near unexpected token `from'

Was kann ich noch unternehmen (was mache ich falsch) um rauszukriegen, welches das Unix-Socket-Verzeichnis ist? Merci im Voraus. Grüsse Phil



1. find / -name .s.PGSQL.5432 (du suchst ja nicht /tmp)
2. lief PG zu diesem Zeitpunkt?
3. die Shell kann keine SQL-Befehle. Dazu brauchst bei laufender DB eine Client-Connection zur DB und da fragst das dann ab. Hint: die DB *KANN* SQL ;-)

philmyer
Neuer Benutzer
Beiträge: 8
Registriert: Fr 14. Mär 2014, 16:09

Re: PostgreSQL startet nicht

Beitrag von philmyer » Fr 21. Mär 2014, 12:49

akretschmer hat geschrieben:1. find / -name .s.PGSQL.5432 (du suchst ja nicht /tmp)
2. lief PG zu diesem Zeitpunkt?
3. die Shell kann keine SQL-Befehle. Dazu brauchst bei laufender DB eine Client-Connection zur DB und da fragst das dann ab. Hint: die DB *KANN* SQL ;-)


merci und kurz eine Rückmeldung zu oben:
Nein, PG lief nicht, bei keinem der Versuche (sh-3.2# find / -name tmp, sh-3.2# find / -name .s.PGSQL.5432 -->siehe vorderen Beitrag am Ende)
Den SQL-Befehl 'select setting from pg_settings where name = 'unix_socket_directories' auf der Shell auszuführen ist ein Fauxpas, sorry!

Daher versuche ich jetzt zuerst den PG-Server zu starten aber komme nicht weiter wegen dem alten "Problem" (vorher hat PG-Server das Starten als root verweigert, daher als philippmeier, _postgres versucht-->siehe unten):
bash-3.2$ ./postgres -D /usr/local/pgsql/data
2014-03-21 11:39:00 CETFATAL: data directory "/usr/local/pgsql/data" has wrong ownership
2014-03-21 11:39:00 CETHINT: The server must be started by the user that owns the data directory.

Aber wie kriege ich raus, wer die 'ownership' von '/usr/local/pgsql/data' hat, wenn dies nicht _postgres ist?
sh-3.2# ls -l
drwxrwxrwx 20 _postgres _postgres 680 17 Mär 23:09 data

Grüsse und besten Dank für Hinweise im Voraus! Phil

----------------------------------------------
PG-Server als root starten
philipps-mbp:~ philippmeier$ sudo su root
Password:
sh-3.2# cd bin
sh-3.2# ./postgres -D /usr/local/pgsql/data
Der PostgreSQL-Server darf nicht als „root“ ausgeführt werden. Der
Server muss unter einer unprivilegierten Benutzer-ID gestartet werden,
um mögliche Sicherheitskompromittierung zu verhindern. In der
Dokumentation finden Sie weitere Informationen darüber, wie der
Server richtig gestartet wird.

PG-Server als philippmeier starten
sh-3.2# sudo su philippmeier
bash-3.2$ ./postgres -D /usr/local/pgsql/data
2014-03-21 11:37:23 CETFATAL: data directory "/usr/local/pgsql/data" has wrong ownership
2014-03-21 11:37:23 CETHINT: The server must be started by the user that owns the data directory.
bash-3.2$ cd ..
bash-3.2$ ls
bin data include lib share var
bash-3.2$ ls -l
drwxrwxrwx 20 _postgres _postgres 680 17 Mär 23:09 data

PG-Server als _postges starten
bash-3.2$ sudo su _postgres
bash-3.2$ cd bin
bash-3.2$ ./postgres -D /usr/local/pgsql/data
2014-03-21 11:39:00 CETFATAL: data directory "/usr/local/pgsql/data" has wrong ownership
2014-03-21 11:39:00 CETHINT: The server must be started by the user that owns the data directory.

Antworten