ubuntuusers.de

PostgreSQL 8.2 :: probleme beim einrichten...

Status: Gelöst | Ubuntu-Version: Nicht spezifiziert
Antworten |

kuekue

Anmeldungsdatum:
22. April 2007

Beiträge: 227

hi there!

ich setze gerade einen webserver auf und der soll nun mit pgsql betrieben werden. ich persönlich kenne mich mit dieser datenbank recht wenig bis gar nciht aus...

nach der lektüre von PostgreSQL habe ich also per apt-get die pakete php5-pgsql, phppgadmin und postgresql-8.2 installiert. jetzt will ich wie im wiki-abschnitt beschrieben das passwort für den admin setzen, aber alles was mir mein server zurückgibt ist

sudo su postgres -c psql template1
psql: could not connect to server: No such file or directory
Is the server running locally and accepting
connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?

den server hab ich schon neu gestartet.

jetzt habe ich dummerweise zuerst ganz nach wiki per apt-get das paket postgresql-8.1 installiert und per apt-get remove wieder entfernt. weg ist die version 8.1 damit aber noch nicht, wie zB ein blick in init.d zeigt: hier findet sich nach wie vor der eintrag für die version 8.1 neben der anschliessend installierten version 8.2

bei der installation von 8.2 sagte er mir dann noch, dass er den port 5433 (abweichend vom standard 5432) nutzen würde, was wohl an den hinterlassenschaften von 8.1 liegen wird. aber auch ein

sudo su postgres -c psql -p 5433 template1

bringt da nichts: ich bekomme exakt das gleiche ergebnis wie oben. ich will postgresql nochmal komplett runterschmeissen und neu installieren.

deswegen jetzt meine zwei folgenden fragen:

1.) wie bekomme ich postgresql-8.1 KOMPLETT vom system runter? also so komplett dass man nicht feststellen kann, ob es jemals installiert wurde? solche einträge wie der in der init.d und der offensichtlich noch belegte port 5432 sind kein zustand.
2.) wie richte ich denn nun den server-admin ein? so wie im wiki beschrieben scheint es nun nicht zu klappen - auch nicht über den manuell angegebenen port...

comm_a_nder

Avatar von comm_a_nder

Anmeldungsdatum:
5. Februar 2006

Beiträge: 2533

Wohnort: Dresden

paste mal bitte die ausgabe von

/etc/init.d/postgresql-8.2 status

kuekue

(Themenstarter)

Anmeldungsdatum:
22. April 2007

Beiträge: 227

also ich habe einfach mal spasseshalber - um mein system wieder einigermassen sauber zu bekommen postgresql-8.1 NOCHMAL installiert und dann per

apt-get remove --purge postgresql-8.1 postgresql-8.2

ALLES runtergeschmissen, was auch den verbleibenden eintrag in der init.d gelöscht hat ☺

zwischenfrage: ist das mit dem --purge "DIE" methode, um software sauber (das heisst komplett) vom system zu entfernen?

danach habe ich pgsql 8.1 neu installiert und dann klappt das auch alles. der status des servers ist:

root@linus:~# /etc/init.d/postgresql-8.2 status
Version Cluster Port Status Owner Data directory Log file
8.2 main 5432 online postgres /var/lib/postgresql/8.2/main /var/log/postgresql/postgresql-8.2-main.log
root@linus:~#

das im wiki beschriebene ändern des userpassworts ralle ich nur noch nciht. wenn ich das so wie es da steht eingebe mit meinem passwort, kann ich mich anschliessend weder per phppgadmin noch mit pgadmin mit dem server verbinden (user pgadmin oder root mit dem jeweiligen passwort)

ich bekomme damit auch nciht die meldung "alter user successfull", sondern "alter role"...

was mache ich falsch?

kuekue

(Themenstarter)

Anmeldungsdatum:
22. April 2007

Beiträge: 227

.

kuekue

(Themenstarter)

Anmeldungsdatum:
22. April 2007

Beiträge: 227

*push*

comm_a_nder

Avatar von comm_a_nder

Anmeldungsdatum:
5. Februar 2006

Beiträge: 2533

Wohnort: Dresden

Wenn Du nicht schreibst, was genau Du eingegeben hast, und was dabei rauskam, wirst Du keine Hilfe erwarten können, es sei denn, hier sind Hellseher unter uns.

kuekue

(Themenstarter)

Anmeldungsdatum:
22. April 2007

Beiträge: 227

hmm - also ich habe wie im wiki beschrieben in der bash eingegeben:

sudo su postgres -c psql template1

damit war ich beim promt des pgsql-servers und habe da eingegeben

ALTER USER postgres WITH PASSWORD 'meintollespasswort';

was er mit einem "ALTER ROLE" quittiert hat und nicht wie im wiki beschrieben mit einem "ALTER USER SUCCESSFULL"

darüber hinaus besteht die frage, wie das mit der fernadministration läuft. in der /etc/postgresql/8.2/main/pg_hba.conf kann man ja angeblich einstellen, welche rechner sich wie beim server authentifizieren dürfen. um nur das lokale netz freizuschalten habe ich jetzt

host all all 123.456.789.0 255.255.255.0 md5

eingegeben, was EIGENTLICH heissen sollte, dass alle rechner im netz 123.456.789 zugriff haben. klappt aber trotzdem nicht.
ausserdem: wenn ich da jetzt einstellen will, dass ich mit einem administrationstool von JEDER ipadresse auf den server zugreifen kann - was gebe ich da ein?
und: dass pgadmin von einer externen maschine auf den server zugreift ist logisch. was ist aber mit tools, die auf dem server laufen und per browser administriert werden? namentlich phppgadmin... (damit klappt die authentifikation genausowenig wie mit pgadmin)

konkret passiert beim anmelden mit pgadmin folgendes: ich gebe die daten im dialogfenster zum verbinden zum server korrekt ein und klicke auf "verbinden". das quittiert das programm mit dem erneuten öffnen desselben fensters und sonst gar nix.
phppgadmin reagiert auf das eingeben von username und passwort mit der meldung "anmelden nicht erlaubt"...

meine pg_hba.conf:

# Database administrative login by UNIX sockets
local   all         postgres                          ident sameuser

# TYPE  DATABASE    USER        CIDR-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          md5
host    all         all         123.456.789.0   255.255.255.128 md5
# IPv6 local connections:
host    all         all         ::1/128               md5


...also bis auf die dritte zeile von unten standardkonfiguration...

was ich generell erreichen will:
- man soll sich per pgadmin und phppgadmin auf dem server einloggen und diesen administrieren können.
- die benutzerkonten, die dafür angelegt werden, sollen keine (!) unix-useraccounts sein. ich will ausser dem standarduser "postgres" keine weiteren user im linuxsystem anlegen, nur damit diese auf den server zugreifen können. sofern das möglich ist.

comm_a_nder

Avatar von comm_a_nder

Anmeldungsdatum:
5. Februar 2006

Beiträge: 2533

Wohnort: Dresden

kuekue hat geschrieben:

hmm - also ich habe wie im wiki beschrieben in der bash eingegeben:

sudo su postgres -c psql template1

damit war ich beim promt des pgsql-servers und habe da eingegeben

ALTER USER postgres WITH PASSWORD 'meintollespasswort';

was er mit einem "ALTER ROLE" quittiert hat und nicht wie im wiki beschrieben mit einem "ALTER USER SUCCESSFULL"

Das ist OK, in dem Fall ist das Wiki nicht korrekt, seit 8.1 gibt es nur noch Rollen, keine Nutzer und Gruppen mehr.

kuekue hat geschrieben:

darüber hinaus besteht die frage, wie das mit der fernadministration läuft. in der /etc/postgresql/8.2/main/pg_hba.conf kann man ja angeblich einstellen, welche rechner sich wie beim server authentifizieren dürfen. um nur das lokale netz freizuschalten habe ich jetzt

host all all 123.456.789.0 255.255.255.0 md5

eingegeben, was EIGENTLICH heissen sollte, dass alle rechner im netz 123.456.789 zugriff haben. klappt aber trotzdem nicht.
ausserdem: wenn ich da jetzt einstellen will, dass ich mit einem administrationstool von JEDER ipadresse auf den server zugreifen kann - was gebe ich da ein?
und: dass pgadmin von einer externen maschine auf den server zugreift ist logisch. was ist aber mit tools, die auf dem server laufen und per browser administriert werden? namentlich phppgadmin... (damit klappt die authentifikation genausowenig wie mit pgadmin)

konkret passiert beim anmelden mit pgadmin folgendes: ich gebe die daten im dialogfenster zum verbinden zum server korrekt ein und klicke auf "verbinden". das quittiert das programm mit dem erneuten öffnen desselben fensters und sonst gar nix.
phppgadmin reagiert auf das eingeben von username und passwort mit der meldung "anmelden nicht erlaubt"...

meine pg_hba.conf:

# Database administrative login by UNIX sockets
local   all         postgres                          ident sameuser

# TYPE  DATABASE    USER        CIDR-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          md5
host    all         all         123.456.789.0   255.255.255.128 md5
# IPv6 local connections:
host    all         all         ::1/128               md5


...also bis auf die dritte zeile von unten standardkonfiguration...

was ich generell erreichen will:
- man soll sich per pgadmin und phppgadmin auf dem server einloggen und diesen administrieren können.
- die benutzerkonten, die dafür angelegt werden, sollen keine (!) unix-useraccounts sein. ich will ausser dem standarduser "postgres" keine weiteren user im linuxsystem anlegen, nur damit diese auf den server zugreifen können. sofern das möglich ist.

Die pg_hba.conf sieht erstmal korrekt aus. Ich geh mal davon aus, dass Du ein (verständlicherweise) hier eine Fake-IP benutzt hast 😉
Dann wären jetzt zwei Sachen zu klären:
1. Auf welchen Netzwerkinterfaces lauscht PostgreSQL? Das wird in der /etc/postgresql/8.2/main/postgresql.conf eingestellt (ist auch schön ausführlich kommentiert → listen_addresses). Das Ergebniss kontrollieren kann man mit

sudo netstat -tulpen | grep postgres


2. Hast Du den Server auch neugestartet nach Änderungen im Konfigfile? (bei Änderungen in der pg_hba.conf reicht sogar ein reload)

kuekue

(Themenstarter)

Anmeldungsdatum:
22. April 2007

Beiträge: 227

hi!

danke erstmal für die antwort!

ja - das ist eine fake-ip. die richtige wollte ich nicht posten, da es sich um eine statische ip handelt...

Proto Recv-Q Send-Q Local Address Foreign Address State User Inode PID/Program name
tcp 0 0 127.0.0.1:5432 0.0.0.0:* LISTEN 105 26470 11212/postgres

ist die ausgabe von netstat. in der postgres.conf habe ich

listen_adresses = '*'
und
password_encryption = on

eingestellt. den server habe ich mit /etc/init.d/postgresql-8.2 restart neu gestartet. klappt leider trotzdem nicht ☹ mit meinem linux-latein bin ich damit leider auch am ende angekommen. keine ahnung, woran es jetzt noch liegen könnte.

ach ja: das passwort des postgres-users (systemaccount) habe ich auch schon geändert (auf das gleiche, das ich in der postgres-geschichte eingestellt habe)...

habe auf http://hocuspokus.net/2007/11/05/install-postgresql-on-ubuntu-710/#comment-147 auch noch ein (weitgehende mit dem wiki übereinstimmendes) howto gefunden, das mich aber auch nicht weiterbringt...

kuekue

(Themenstarter)

Anmeldungsdatum:
22. April 2007

Beiträge: 227

ok - jetzt kommt die grosse peinliche antwort...

habe in der postegresql.conf übersehen, dass die zeile listen_adresses auskommentiert war -.-

so läuft es jetzt...

lunix

Anmeldungsdatum:
23. Oktober 2007

Beiträge: 549

Wohnort: Berlin

kuekue hat geschrieben:

hmm - also ich habe wie im wiki beschrieben in der bash eingegeben:

sudo su postgres -c psql template1

damit war ich beim promt des pgsql-servers und habe da eingegeben

ALTER USER postgres WITH PASSWORD 'meintollespasswort';

was er mit einem "ALTER ROLE" quittiert hat und nicht wie im wiki beschrieben mit einem "ALTER USER SUCCESSFULL" ...

konkret passiert beim anmelden mit pgadmin folgendes: ich gebe die daten im dialogfenster zum verbinden zum server korrekt ein und klicke auf "verbinden". das quittiert das programm mit dem erneuten öffnen desselben fensters und sonst gar nix....

Ich steck immer noch hier fest. Ich habe ein Passwort für user postgres festgelegt, kann aber über pgadmin nicht mit dem Server verbinden. Komischerweise ist eine Verbindung als Normalnutzer (gleicher Name wie mein Linux-Nutzername) möglich.

comm_a_nder

Avatar von comm_a_nder

Anmeldungsdatum:
5. Februar 2006

Beiträge: 2533

Wohnort: Dresden

Abgesehen davon, dass postgres wirklich nur zur systemseitigen Datenbankverwaltung genutzt werden sollte - der User postgres hat nicht nur so aus Langeweile kein PW, sondern kann sich nur lokal über einen Unixsocket verbinden - und für die Nutzung von extern eine eigene DB Login Rolle angelegt werden sollte (zur Trennung Systemnutzer ←> Datenbanknutzer):

Wie sieht Deine pg_hba.conf aus und was ergibt ein sudo netstat -tulpen | grep postgres?

lunix

Anmeldungsdatum:
23. Oktober 2007

Beiträge: 549

Wohnort: Berlin

"lokal über einen Unixsocket" = localhost? Mit dem Eintrag localhost in die Adresszeile bekomme ich jedenfalls jetzt eine Verbindung für User postgres. Bei User lunix muss die Adresszeile leer bleiben, damit es klappt.

Die pg_hba.conf:

# Database administrative login by UNIX sockets
local   all         postgres                          ident sameuser

# TYPE  DATABASE    USER        CIDR-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          md5
# IPv6 local connections:
host    all         all         ::1/128               md5


Verändert habe ich daran nichts, denn ich will postgres vorläufig nur lokal nutzen.

sudo netstat -tulpen | grep postgres ergibt:

tcp        0      0 127.0.0.1:5432          0.0.0.0:*               LISTEN     104        17728      5080/postgres

comm_a_nder

Avatar von comm_a_nder

Anmeldungsdatum:
5. Februar 2006

Beiträge: 2533

Wohnort: Dresden

Läuft pgadmin denn auf dem gleichen Rechner wie der PostgreSQL Server?

Und was steht so in /var/log/postgresql/postgresql-8.2-main.log

lunix

Anmeldungsdatum:
23. Oktober 2007

Beiträge: 549

Wohnort: Berlin

Ja, alles auf einem Rechner.

Im Postgres-Log findet man Einträge wie:

2008-01-16 16:46:17 CET FATAL:  Ident-Authentifizierung für Benutzer »postgres« fehlgeschlagen
2008-01-16 16:50:50 CET FATAL:  Passwort-Authentifizierung für Benutzer »lunix« fehlgeschlagen

Im Zusammenhang mit postgres ging es immer um die Ident-Authentifizierung, beim Normalnutzer immer um die Passwort-Authentifizierung.

Zuletzt hatte ich noch das Passwort für den Linux-Nutzer postgres explizit auf den gleichen Wert wie das Passwort des Postgres-Nutzers postgres gesetzt, wie hier
http://hocuspokus.net/2007/11/05/install-postgresql-on-ubuntu-710/#comment-147 beschrieben:

That alters the password for within the database, now we need to do the same for the unix user ‘postgres’:

$ sudo passwd -d postgres
$ sudo su postgres -c passwd

Now enter the same password that you used previously.

Ob das wirklich eine Voraussetzung dafür ist, dass eine Verbindung für postgres möglich ist, weiß ich nicht; im Wiki ist davon jedenfalls nicht die Rede.

Antworten |