Zainstaluj postgresql. Dlaczego initdb jest niedostępny?

15

Postępuję zgodnie z tymi instrukcjami , ale mogę przejść tylko do kroku 17.2.

Pomimo pomyślnej instalacji postgresql za pośrednictwem

sudo apt-get install postgresql

polecenie, po uruchomieniu

initdb -D /usr/local/pgsql/data

Ubuntu mówi mi, że 'initdb' nie jest zainstalowany. Instrukcje mówią mi, że to polecenie jest instalowane przez

sudo apt-get install postgresql

więc co się dzieje? Mogę udostępnić initdb, instalując postgres-xc, ale myślę, że postgres-xc to tylko jakieś dziwne śmieci firm trzecich i nie jest to szczegółowo opisane w instrukcjach. Jakieś pomysły?

Starkers
źródło

Odpowiedzi:

14

initdbjest przeznaczony do uruchamiania na koncie użytkownika postgres, które jest tworzone podczas instalacji. Po zainstalowaniu postgresql możesz:

sudo su - postgres

Wtedy powinieneś być w stanie biec initdb.

Brian.D.Mers
źródło
4
Cytowanie z /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
Nawet po przejściu na użytkownika postgres wciąż pojawia się ten błąd
Cogwheel
To nie działa dla mnie w Ubuntu Server 14 przy użyciu Postgres 9.6.
sudo,
To nie działa, ponieważ initdbjest w /usr/lib/postgresql/X.X/bin/.
Li Dong
27

Znajdziesz initdbponiżej /usr/lib/postgresql/x.y/bin/. Zobacz także, /usr/share/doc/postgresql-common/README.Debian.gzaby uzyskać więcej informacji na temat konfiguracji Debiana i Ubuntu.

Peter Eisentraut
źródło
To naprawdę powinna być zaakceptowana odpowiedź. initdbjest podstawowym poleceniem, ale użytkownicy Debiana i Ubuntu powinni używać pg_createcluster i powiązanego z nim zestawu poleceń. Co więcej, zwykle nie musisz tego robić initdbLUB pg_createclusterpóźniej, apt-get install postgresqlponieważ standardowa instalacja już tworzy domyślny klaster z serwerem i domyślnymi bazami danych / szablonów. README, o którym wspomina Piotr, jest warte twojego czasu na przeczytanie.
cdaddr
2
@cdaddr Nie, zwykle nie potrzebujesz go po zainstalowaniu postgres. Jeśli jednak potrzebujesz szybko ponownie utworzyć klaster i nie chcesz zawracać sobie głowy ponowną instalacją postgresów lub jeśli chcesz zainicjować nową bazę danych w niestandardowej lokalizacji, może się to przydać. Tak, to świetna odpowiedź.
Erathiel,
1
Pracuje. I to jest najlepsze, ponieważ w ten sposób mogę mieć pewność, której wersji używam.
sudo,
szukamy initdb, ponieważ samouczek mówi tak postgresql.org/docs/10/static/creating-cluster.html
nerkn
2

initdbnie jest instalowany jako plik wykonywalny użytkownika. Jest instalowany tylko w /usr/lib/postgresql/X.X/bin/, ponieważ zawsze zależy od wersji. initdbmożna wykonać tylko z tego konkretnego katalogu.

Jak wspomniano w innych odpowiedziach, instalacja postgres tworzy domyślny katalog, który może znajdować się na ograniczonej partycji. Użytkownicy mogą chcieć to zmienić, ale wymaga to również innych kroków. patrz tutaj .

ilias iliadis
źródło
-2

wykonaj następujące kroki od root 1. passwd opublikuje hasło, a następnie 2.su postgres 3.psql 4. utwórz użytkownika o nazwie użytkownika, np. „UTWÓRZ SAM; 5. utwórz bazę danych sam; teraz wyloguj się 6.ql psql do swojego użytkownika

smn_onrocks
źródło
Ta odpowiedź w ogóle nie odnosi się do pytania.
cdaddr