Установите postgresql. Почему initdb недоступен?


15

Я следую этим инструкциям , однако могу перейти только к шагу 17.2.

Несмотря на успешную установку postgresql через

sudo apt-get install postgresql

команда, после запуска

initdb -D /usr/local/pgsql/data

Ubuntu говорит мне, что это 'initdb' не установлен. Инструкции говорят мне, что эта команда установлена

sudo apt-get install postgresql

так что же происходит? Я могу сделать initdb доступным, установив postgres-xc, но я думаю, что postgres-xc - это просто какой-то странный мусор третьей стороны, и он не описан в инструкциях. Есть идеи?

Ответы:


14

initdbпредназначен для запуска под учетной записью пользователя postgres, созданной во время установки. После установки postgresql вы можете сделать:

sudo su - postgres

Тогда ты сможешь бежать initdb.


4
Цитата из /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
Даже после перехода пользователя Postgres Я все еще получаю эту ошибку
Зубчатая

Это не работает для меня в Ubuntu Server 14 с использованием Postgres 9.6.
Судо

Это не работает, так как initdbнаходится в /usr/lib/postgresql/X.X/bin/.
Ли Донг

27

Вы найдете initdbпод /usr/lib/postgresql/x.y/bin/. Смотрите также /usr/share/doc/postgresql-common/README.Debian.gzдля получения дополнительной информации о настройке Debian и Ubuntu.


Это действительно должен быть принятый ответ. initdbявляется основной командой, но пользователи Debian и Ubuntu должны использовать pg_createcluster и связанный с ним набор команд. Более того, вам обычно не требуется initdbИЛИ pg_createclusterпосле, apt-get install postgresqlпотому что стандартная установка уже создает кластер по умолчанию с сервером и базами данных по умолчанию / шаблонами. ЧИТАЙТЕ, что Питер упоминает выше, стоит вашего времени, чтобы прочитать.
cdaddr

2
@cdaddr Нет, вам обычно это не нужно после установки postgres. Тем не менее, если вам нужно быстро воссоздать кластер и не хотите переустанавливать postgres или если вам нужно инициализировать новую базу данных в нестандартном месте, это может пригодиться. Так что да, это отличный ответ.
Эратиэль

1
Работает. И это лучше, потому что таким образом я могу быть уверен, какую версию я использую.
Судо

мы ищем initdb, потому что, как говорится в учебнике, postgresql.org/docs/10/static/creating-cluster.html
nerkn

2

initdbне устанавливается как исполняемый файл пользователя. Устанавливается только в /usr/lib/postgresql/X.X/bin/, потому что это всегда зависит от версии. initdbможет быть выполнен только из этого конкретного каталога.

Как упоминалось в других ответах, установка postgres создает каталог по умолчанию, который может находиться в ограниченном разделе. Пользователи могут хотеть изменить это, но это также требует других шагов. см здесь .


-2

выполните следующие шаги из root 1.passwd postgres ваш пароль, затем 2.su postgres 3.psql 4. создайте пользователя с вашим именем пользователя, например, «CREATE USER SAM;» 5. создать базу данных sam; сейчас выйдите из системы 6.type psql для вашего пользователя


Этот ответ не касается вопроса напрямую.
cdaddr
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.