Installieren Sie postgresql. Warum ist initdb nicht verfügbar?


15

Ich folge diesen Anweisungen , komme jedoch nur zu Schritt 17.2.

Trotz erfolgreicher Installation von postgresql über die

sudo apt-get install postgresql

Befehl beim Laufen

initdb -D /usr/local/pgsql/data

Ubuntu sagt mir, dass 'initdb' nicht installiert ist. Die Anweisungen sagen mir, dass dieser Befehl von installiert wird

sudo apt-get install postgresql

so was ist los? Ich kann initdb verfügbar machen, indem ich postgres-xc installiere, aber ich denke, postgres-xc ist nur ein seltsamer Müll von Drittanbietern und wird in den Anweisungen nicht detailliert beschrieben. Irgendwelche Ideen?

Antworten:


14

initdbsoll unter dem postgres-Benutzerkonto ausgeführt werden, das während der Installation erstellt wird. Nach der Installation von postgresql können Sie Folgendes tun:

sudo su - postgres

Dann solltest du laufen können initdb.


4
Zitiert aus /usr/share/doc/postgresql-common/README.Debian.gz:Please note that you can of course also use the upstream tools for creating clusters, such as initdb(1). However, please note that in this case you cannot expect *any* of above pg_* tools to work, since they use different configuration settings and file locations. If in doubt, then do *not* use initdb, but only pg_createcluster. Since merely installing postgresql-X.Y will already set up a default cluster which is ready to work, most people do not need to bother about initdb or pg_createcluster at all.
cdaddr

3
Auch nach dem Umstieg auf den Benutzer postgres erhalte ich diesen Fehler
Zahnrad

Dies funktioniert in Ubuntu Server 14 mit Postgres 9.6 nicht.
Sudo

Es funktioniert nicht, da initdbist in /usr/lib/postgresql/X.X/bin/.
Li Dong

27

Sie finden initdbunter /usr/lib/postgresql/x.y/bin/. Siehe auch /usr/share/doc/postgresql-common/README.Debian.gzfür weitere Informationen über die Installation auf Debian und Ubuntu.


Dies sollte wirklich die akzeptierte Antwort sein. initdbist der zugrunde liegende Befehl, aber Debian- und Ubuntu-Benutzer sollten pg_createcluster und die dazugehörige Befehlssuite verwenden. Außerdem brauchen Sie normalerweise nicht zu initdbOR pg_createclusternach , apt-get install postgresqlweil der Standard installiert bereits erstellt einen Standard - Cluster, mit einem Server und default / template - Datenbanken für Sie. Die README, die Peter oben erwähnt, ist Ihre Zeit zum Lesen wert.
cdaddr

2
@cdaddr Nein, nach der Installation von postgres wird es normalerweise nicht benötigt. Wenn Sie jedoch feststellen, dass Sie einen Cluster schnell neu erstellen müssen und sich nicht mit der Neuinstallation von postgres beschäftigen möchten oder wenn Sie eine neue Datenbank an einem nicht standardmäßigen Speicherort initialisieren müssen, kann dies nützlich sein. Also ja, das ist eine großartige Antwort.
Erathiel

1
Funktioniert. Und es ist das Beste, weil ich auf diese Weise sicher sein kann, welche Version ich verwende.
Sudo

Wir suchen nach initdb, weil das Tutorial dies sagt. postgresql.org/docs/10/static/creating-cluster.html
nerkn

2

initdbist nicht als vom Benutzer ausführbare Datei installiert. Wird nur in installiert /usr/lib/postgresql/X.X/bin/, da es immer auf die Version ankommt. initdbkann nur von diesem bestimmten Verzeichnis ausgeführt werden.

Wie in anderen Antworten erwähnt, erstellt die Installation von postgres ein Standardverzeichnis, das sich möglicherweise in einer begrenzten Partition befindet. Benutzer möchten dies möglicherweise ändern, es sind jedoch auch andere Schritte erforderlich. siehe hier .


-2

Befolgen Sie die folgenden Schritte von root aus: 1.passwd postgres your password dann 2.su postgres 3.psql 4. Erstellen Sie einen Benutzer mit Ihrem Benutzernamen wie "CREATE USER SAM;" 5.erstelle Datenbank sam; Melden Sie sich jetzt ab 6. Geben Sie psql für Ihren Benutzer ein


Diese Antwort spricht die Frage überhaupt nicht direkt an.
Cdaddr
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.