Установите 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.

Brian.D.Myers
источник
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 для вашего пользователя

smn_onrocks
источник
Этот ответ не касается вопроса напрямую.
cdaddr