[gelöst] Kann mich nicht mit postgresql verbinden

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
ralli
Beiträge: 4377
Registriert: 02.03.2008 08:03:02

[gelöst] Kann mich nicht mit postgresql verbinden

Beitrag von ralli » 28.02.2016 15:13:45

Ich will mit Java eine Datenbankanwendung schreiben und habe dafür postgresql und zur Administration pgadmin3 ordnungsgemäß installiert. Wenn ich als root

Code: Alles auswählen

/etc/init.d/postgresql start
eingebe, bekomme ich auch die Antwort

Code: Alles auswählen

[ ok ] Starting postgresql (via systemctl): postgresql.service.


Wenn ich mit pgadmin eine Verbindung einrichten möchte, funktioniert das nicht.

Code: Alles auswählen

Name: RG Server

Host: localhost

Wartungs-DB: postgres

Benutzername: postgres

Passwort:
Später will ich einen neune Benutzer einrichten. Aber das sollte doch auch so funktionieren!

Es kommt die Fehlermeldung:

Der Server antwortet nicht ....

An den Konfigurationsdateien habe ich noch nichts geändert. Der Server soll ganz einfach unter localhost laufen.
Zuletzt geändert von Anonymous am 03.03.2016 10:46:43, insgesamt 2-mal geändert.
Wer nicht lieben kann, muß hassen. Wer nicht aufbauen kann muß zerstören. Wer keine Brücken baut, muß spalten.

Benutzeravatar
ralli
Beiträge: 4377
Registriert: 02.03.2008 08:03:02

Re: Kann mich nicht mit postgresql verbinden

Beitrag von ralli » 28.02.2016 15:50:38

Jetzt bin ich ganz verwirrt. Ich habe postgresql vollständig durch synaptic entfernt. Trotzdem waren unter /etc/posgresql/9.4/main noch alle Konfigurationsdateien da. Die habe ich dann auch nachträglich entfernt, um dann postgresql neu zu installieren. Jetzt befinden sich die posgresql Dateien unter /var/lib. Allerdings fehlen die Konfigurationsdateien. Jetzt bin ich komplett ratlos.
Wer nicht lieben kann, muß hassen. Wer nicht aufbauen kann muß zerstören. Wer keine Brücken baut, muß spalten.

Benutzeravatar
ralli
Beiträge: 4377
Registriert: 02.03.2008 08:03:02

Re: Kann mich nicht mit postgresql verbinden

Beitrag von ralli » 29.02.2016 11:27:36

Arbeitet hier denn niemand mit Postgresql? Na ja egal, ich muß meine Java Anwendung ja nicht für einen Datenbankserver schreiben. Ich nehme jetzt die dateibasierte Datenbank SQlite und das reicht ja auch für einen einzigen User völlig aus. Nicht jeder installiert mal eben für eine Anwendung einen Datenbankserver, damit würde man wohl auch mit Kanonen auf Spatzen schießen. Ich hatte früher schon mal Postgresql unter einer älteren Debian Version laufen, warum das jetzt nicht klappt, ist mir schleierhaft. Ich sehe das Thema als erledigt an, denn ohne Unterstützung komme ich nicht weiter.
Wer nicht lieben kann, muß hassen. Wer nicht aufbauen kann muß zerstören. Wer keine Brücken baut, muß spalten.

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: [erledigt] Kann mich nicht mit postgresql verbinden

Beitrag von rendegast » 29.02.2016 15:23:03

Ich habe hier (jessie)

Code: Alles auswählen

# aptitude install postgresql
The following NEW packages will be installed:
  postgresql [9.4+165]  postgresql-9.4{a} [9.4.6-0+deb8u1]  postgresql-client-9.4{a} [9.4.6-0+deb8u1]  postgresql-client-common{a} [165]  
  postgresql-common{a} [165]  
0 packages upgraded, 5 newly installed, 0 to remove and 2 not upgraded.
Need to get 0 B/5,087 kB of archives. After unpacking 23.9 MB will be used.
Do you want to continue? [Y/n/?] 
...

# netstat | grep postgr
tcp        0      0 127.0.0.1:5432          0.0.0.0:*               LISTEN      28709/postgres  
udp        0      0 127.0.0.1:41511         127.0.0.1:41511         ESTABLISHED 28709/postgres  
Da wohl nur localhost. Hat pgadmin vielleicht auf externer IP versucht?

Ging denn

Code: Alles auswählen

# su - postgres

$ echo '\l' | psql
....(entsprechende Auflistung)....

$ echo '\conninfo' | psql
Sie sind verbunden mit der Datenbank „postgres“ als Benutzer „postgres“ via Socket in „/var/run/postgresql“ auf Port „5432“.
?


Damit ein beliebiger Benutzer sich als Admin resp. postgres anmelden kann

Code: Alles auswählen

$ psql -h localhost -U postgres -W

('-h ...' ist hier wichtig, siehe etliche Fundstellen im www, und s.u.)
oder auch entsprechend per pgadmin3,
muß dem postgres zuerst ein Password gegeben werden:

Code: Alles auswählen

# su - postgres
$ echo '\password' | psql
Neues Passwort eingeben: 
Geben Sie es noch einmal ein: 
Das dürfte nur der Benutzer postgres in der DB sein, nicht der linux-System-Benutzer postgres.
Der bleibt wohl Paßwort-los, um Einloggen desselben zu unterbinden.
EDIT Es geht wirklich nur um den DB-Benutzer 'postgres',
der linux-Benutzer bleibt unberührt, in /etc/shadow ":*:" == locked/no-login.


Nochmal wegen '-h':

Code: Alles auswählen

$ echo "\conninfo" | psql -U postgres -W
Passwort für Benutzer postgres: 
psql: FATAL:  Peer-Authentifizierung für Benutzer „postgres“ fehlgeschlagen

<->

$ echo "\conninfo" | psql -h localhost -U postgres -W
Passwort für Benutzer postgres: 
Sie sind verbunden mit der Datenbank „postgres“ als Benutzer „postgres“ auf Host „localhost“ auf Port „5432“.
SSL-Verbindung (Protokoll: TLSv1.2, Verschlüsselungsmethode: ECDHE-RSA-AES256-GCM-SHA384, Bits: 256, Komprimierung: aus)


pgadmin3:
Unter
Eigenschaften > Host: localhost
Erweitert > Host/IP: leer
Aber zuerst hat es sinngemäß nicht funktioniert,
erst nach etwas sinnlosem Herumspielen mit "10.1.5.117"/"localhost" in diesen beiden Feldern.
EDIT In Eigenschaften>Eigenschaften>Host: darf nicht die IP eingetragen werden,
außer der Server/Host "127.0.0.1" bekommt unter Eigenschaften>Erweitert>Host/IP: auch die IP 127.0.0.1.





--------------------------------------
Entfernen solcher Konfiguration beim Deinstallieren kann vorgegeben werden
APT::Get::Purge "true";
Aptitude::Purge-Unused "true";

Zudem trägt sich postgre als NeverAutoRemove ein.

Mit dem Schalter
--auto-remove resp.
APT::Get::AutomaticRemove "true";
Wird bei Inst/Deinst durch apt-get das gegebenenfalls nötige 'apt-get autoremove' ('aptitude install') automatisch gemacht,
das ist aber eventuell so nicht erwünscht.
Andernfalls: aptitude setzt beim Benutzen, insbesondere bei Spielereien im TUI, gerne mal den Paketstatus um,
aus einem vorgesehenen Entfernungskandidaten (automatisch-installiert + nicht mehr benötigt)
kann dann bei Unterbleiben der Entfernung auch unbeabsichtigt ein manuell-installiertes Paket werden,
welches dauerhaft auf dem System verbleibt.

Auch ist zu bedenken, daß zu "Konfiguration" auch eine vorhandene DB gezählt werden könnte.
Also eventuell 'Purge' -> DB weg.
Zuletzt geändert von rendegast am 01.03.2016 13:47:26, insgesamt 1-mal geändert.
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

Benutzeravatar
ralli
Beiträge: 4377
Registriert: 02.03.2008 08:03:02

Re: [erledigt] Kann mich nicht mit postgresql verbinden

Beitrag von ralli » 01.03.2016 11:23:30

Erst mal vielen Dank rendegast für die ausführliche Antwort. Ich habe Stunden damit verbracht und festgestellt, das es sehr viele "angebliche" Lösungen gibt. Keine davon hat bei mir funktioniert. Früher mußte nach der Installation von dem Postgresql Server erst die Datenbank initialisiert werden. Fällt das nun weg? Ich muß Debian neu installieren, um nach Deiner Konfiguration vorzugehen. Zur Zeit habe ich auf meiner zweiten Festplatte CentOS 7 installiert mit dem KDE Desktop. Da funktioniert der Server und auch die Verbindung mit pgadmin3. Allerdings ein gänzlich andere Lösungsansatz, den ich auch mal hier poste:

Code: Alles auswählen

Server installieren:

yum install postgresql-server postgresql-contrib

Datenbank initialisieren:

postgresql-setup initdb

/var/lib/pgsql/data/pg_hba.conf editieren:

host    all             all             127.0.0.1/32            ident
host    all             all             ::1/128                 ident

ändern in:

host    all             all             127.0.0.1/32            md5
host    all             all             ::1/128                 md5

Server starten:

systemctl start postgresql
systemctl enable postgresql

Passwort für admin postgres setzen:

als root:

Server starten:

sudo systemctl start postgresql

su - postgres

Meldung:

Letzte Anmeldung: Dienstag, den 01. März 2016, 08:56:35 CET auf pts/1
-bash-4.2$ 

psql

alter user postgres with password 'xxxxxx'; 

Es erscheint die Antwort:

ALTER ROLE

mit exit verlassen
Meine Verbindungsdaten für pgadmin3 sehen folgendermaßen aus:

Code: Alles auswählen

Verbindungsdaten für pgadmin3:

Name: RG Server

Host: localhost

Port: 5432

Service: leer

Wartungs-DB: postgres

Benutzername: postgres

Passwort: xxxxxx

Gruppe: Server

Server starten, stoppen, Neustart und Status abfragen:

Code: Alles auswählen

Server starten:

als root

sudo systemctl start postgresql

Server Neustart:

sudo systemctl reload postgresql

Server stoppen:

sudo systemctl stop postgresql

Server Status:

sudo systemctl status postgresql
Warum es keine einheitliche Vorgehensweise gibt, weiß ich nicht wirklich.

Also werde in bälde eine Neuinstallation vornehmen und dann weiter berichten.
Wer nicht lieben kann, muß hassen. Wer nicht aufbauen kann muß zerstören. Wer keine Brücken baut, muß spalten.

Benutzeravatar
KBDCALLS
Moderator
Beiträge: 22441
Registriert: 24.12.2003 21:26:55
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Dortmund
Kontaktdaten:

Re: [erledigt] Kann mich nicht mit postgresql verbinden

Beitrag von KBDCALLS » 01.03.2016 11:53:08

Wieso soll man neu installieren ?

Hiernach https://wiki.ubuntuusers.de/PostgreSQL/ hab ich mal einen neuen User angelegt und konnte mich dann mit http://localhost/phppgadmin einloggen.
Was haben Windows und ein Uboot gemeinsam?
Kaum macht man ein Fenster auf, gehen die Probleme los.

EDV ist die Abkürzung für: Ende der Vernunft

Bevor du einen Beitrag postest:
  • Kennst du unsere Verhaltensregeln
  • Lange Codezeilen/Logs gehören nach NoPaste, in Deinen Beitrag dann der passende Link dazu.

Benutzeravatar
ralli
Beiträge: 4377
Registriert: 02.03.2008 08:03:02

Re: [erledigt] Kann mich nicht mit postgresql verbinden

Beitrag von ralli » 01.03.2016 16:40:53

Danke KBDCALLS. Nun, genau nach der Anleitung im Ubuntu Wiki bin ich vorgegangen. Ich konnte mich danach mit dem Server und psql auf der Konsole verbinden, aber mit pgadmin3 funktionierte es eben nicht. Dabei will ich betonen, das ich viele male verschieden Datenbankserver installierte und schon ein wenig Erfahrung habe mit dessen Konfiguration. Ich habe früher sogar Datenbankfrontends mit Lazarus programmiert. Das wollte ich jetzt mit Java umsetzen, weil das ja plattformunabhängig ist. Nur wenn die andauernd bei jeder Version was ändern, dann bin ich auch ratlos. Seit wann oder ab welche Version muß denn die Datenbank nach der Installation nicht mehr initialisiert werden? Oder funktioniert beides, ohne diese Initialsierung und mit auch? Es gibt im Netz zahlreiche Anleitungen. Aber seltsamer Weise auch oft sehr unterschiedlich. Wie auch immer, nachdem die Verbindung bei gestarteten Server mit pgadmin trotzdem fehlschlug, habe ich alles gelöscht, um eine Neuinstallation zu machen. Dabei fiel mir auf, das in /etc der Ordner postgresql mit den Unterordner nicht mitgelöscht wurde. Das habe ich dann manuell nachgeholt. Als ich dann eine Neuinstallation mit Synaptic machte, wurde postgresql nicht nach /etc ... sondern nach var/lib installiert. Als ich die pg_hba.conf neu konfigurieren wollte, fehlte die ganz. Was hier genau passiert ist, kann ich nur vermuten. Deshalb steht nun eine Neuinstallation von Debian an. Jetzt kannst Du Dir vielleicht ein besseres Bild machen.
Wer nicht lieben kann, muß hassen. Wer nicht aufbauen kann muß zerstören. Wer keine Brücken baut, muß spalten.

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: [erledigt] Kann mich nicht mit postgresql verbinden

Beitrag von rendegast » 01.03.2016 17:04:15

Einmal
ralli hat geschrieben: als root
sudo systemctl start postgresql
root braucht kein sudo

Früher mußte nach der Installation von dem Postgresql Server erst die Datenbank initialisiert werden.
Naja, früher.
Hier läuft nach der Installation der Server, ergo wurde auch die Grunddatenbank erstellt, denn ohne DB:

Code: Alles auswählen

# service postgresql start
Starting PostgreSQL 9.4 database server: mainError: /var/lib/postgresql/9.4/main is not accessible or does not exist ... failed!
 failed!
... auf meiner zweiten Festplatte CentOS 7 installiert mit dem KDE Desktop. ...
Allerdings ein gänzlich andere Lösungsansatz, den ich auch mal hier poste:
...
Warum es keine einheitliche Vorgehensweise gibt, weiß ich nicht wirklich.
Ich erkenne da nichts großartig anderes.
root wird per su zu (linux-)postgres, welcher sich paßwortlos beim DB-Server einloggen darf,
setzt ein (DB-)Paßwort und ermöglicht damit den Paßwort-Login.


Allerdings ein gänzlich andere Lösungsansatz
psql
alter user postgres with password 'xxxxxx';
Es erscheint die Antwort:
ALTER ROLE
Das 'alter .....' ist ein Befehl oder eine Meldung?
Ich habe das beim jessie 9.4 versucht, nix, kenne mich mit DB aber auch nicht aus.
Vielleicht andere Interna bei Deinem DB-Server "CentOS 7"? Stark unterschiedliche Version?
debians Anweisung '\password' könnte ein DB-interner Alias des obigen sein, ein eingebrachtes "goody".
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

Benutzeravatar
ralli
Beiträge: 4377
Registriert: 02.03.2008 08:03:02

Re: [erledigt] Kann mich nicht mit postgresql verbinden

Beitrag von ralli » 01.03.2016 17:17:01

ALTER ROLE ist eine Meldung.
Wer nicht lieben kann, muß hassen. Wer nicht aufbauen kann muß zerstören. Wer keine Brücken baut, muß spalten.

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: [erledigt] Kann mich nicht mit postgresql verbinden

Beitrag von rendegast » 01.03.2016 18:11:13

Ich meinte das 'alter user ...'.
Ist das ein Befehl für (CentOS) psql-Konsole?



---------------------------------------------
Ahhh, habe

Code: Alles auswählen

\help
\help alter
gefunden.
\password finde ich einfacher.
Und
'alter user ....'
'alter role ....'
klappen, wenn ich abschließend ';' mache, Anfängerfehler :oops:



-----------------------------------------------------------
Beim purgen von postgresql

Code: Alles auswählen

# aptitude purge  pgadmin3   pgadmin3-data  postgresql  postgresql-9.4   postgresql-client-9.4   postgresql-client-common   postgresql-common
wird /var/lib/postgresql/ von DB-Inhalten gereinigt.
Liegen keine Daten vom (linux-)Benutzer postgres vor, sowas wie .bash_history,
wird /var/lib/postgresql/ komplett entfernt.
Der (linux-)Benutzer postgres müßte händisch entfernt werden, 'deluser postgres'.
(EDIT typo)
Zuletzt geändert von rendegast am 01.03.2016 19:57:10, insgesamt 1-mal geändert.
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

Benutzeravatar
ralli
Beiträge: 4377
Registriert: 02.03.2008 08:03:02

Re: [erledigt] Kann mich nicht mit postgresql verbinden

Beitrag von ralli » 01.03.2016 19:32:57

Aha, danke, wieder was Neues gelernt. Ich werde mich nun mit postgresql etwas mehr beschäftigen. Der Grundvorrat an SQL ist ja allen Servern gleich. Mich interessiert vor allen Dingen die Volltextsuche in Postgresql, denn ich möchte dann mein ganzes Geschreibsel der letzen 20 Jahre archivieren und hoffe, das ich dann ganz schnell auch mal Textpassagen wiederfinde.
Wer nicht lieben kann, muß hassen. Wer nicht aufbauen kann muß zerstören. Wer keine Brücken baut, muß spalten.

Benutzeravatar
ralli
Beiträge: 4377
Registriert: 02.03.2008 08:03:02

Re: [erledigt] Kann mich nicht mit postgresql verbinden

Beitrag von ralli » 02.03.2016 17:09:51

Noch mals vielen Dank rendegast. Ich habe Debian neu installiert und bin dann exact nach Deiner Anleitung vorgegangen. Es funktioniert.
Wer nicht lieben kann, muß hassen. Wer nicht aufbauen kann muß zerstören. Wer keine Brücken baut, muß spalten.

Benutzeravatar
ralli
Beiträge: 4377
Registriert: 02.03.2008 08:03:02

Re: [erledigt] Kann mich nicht mit postgresql verbinden

Beitrag von ralli » 03.03.2016 10:42:10

Natürlich habe ich gegoogelt, um zu recherchieren, warum es bei mir beim erten Mal nicht klappte. Ich glaube, das das in diesem Fall ein Fehler war. Offensichtlich gibt es unterschiedliche Vorgehensweisen. Bei Debian Jessie brauchen die Konfigurationsdateien für den Betrieb erst ein Mal nicht angepaßt oder geändert werden. Lediglich ist ein Passwort für postgres zu vergeben, weil sonst keine Verbindung mit pgadmin und dem Server zustande kommt. Im übrigen habe ich mich für PostgreSQL entschieden, weil unter anderen Vorteilen die Dokumentation dafür ziemlich gut ist. Hier ein paar Links für Interessierte, die hier mitlesen:

Das offizielle Handbuch für Postgresql kann hier herunter geladen werden:

http://www.postgresql.sk/docs/books/pghandbuch.html.de

Die ersten Schritte in der Administration der PostgreSQL Datenbank:

http://www.postgres.de/download/1Admin_v3.pdf

PostgreSQL - SQL - Anweisungen und pgAdmin:

https://www.luis.uni-hannover.de/filead ... re_SQL.pdf

PostgreSQL Datentypen:

http://cornelia-boenigk.de/pg/pg-datentypen.pdf
Wer nicht lieben kann, muß hassen. Wer nicht aufbauen kann muß zerstören. Wer keine Brücken baut, muß spalten.

Antworten