安装 postgresql。为什么 initdb 不可用?

Sta*_*ers 19 database postgresql

我正在遵循这些说明,但是我只能进入步骤 17.2。

尽管通过以下方式成功安装了 postgresql

sudo apt-get install postgresql
Run Code Online (Sandbox Code Playgroud)

命令,在运行时

initdb -D /usr/local/pgsql/data
Run Code Online (Sandbox Code Playgroud)

Ubuntu 告诉我它没有安装“initdb”。说明告诉我这个命令是由

sudo apt-get install postgresql
Run Code Online (Sandbox Code Playgroud)

发生什么了?我可以通过安装 postgres-xc 来使 initdb 可用,但我认为 postgres-xc 只是一些奇怪的第三方垃圾,并且在说明中没有详细说明。有任何想法吗?

小智 31

您会initdb/usr/lib/postgresql/x.y/bin/. 另请参阅/usr/share/doc/postgresql-common/README.Debian.gz有关 Debian 和 Ubuntu 设置的更多信息。

  • @cdaddr 不,安装 postgres 后通常不需要它。尽管如此,如果您发现自己需要快速重新创建集群并且不想费心重新安装 postgres,或者如果您需要在非标准位置初始化新数据库,这可能会派上用场。所以是的,这是一个很好的答案。 (2认同)
  • 作品。这是最好的,因为这样我可以确定我正在使用哪个版本。 (2认同)

Bri*_*ers 16

initdb旨在在安装期间创建的 postgres 用户帐户下运行。安装 postgresql 后,您可以执行以下操作:

sudo su - postgres

然后你应该能够运行initdb.

  • 引用自 /usr/share/doc/postgresql-common/README.Debian.gz:`请注意,您当然也可以使用上游工具来创建集群,例如 initdb(1)。但是,请注意,在这种情况下,您不能期望上述 pg_* 工具中的任何 * 都能工作,因为它们使用不同的配置设置和文件位置。如果有疑问,那么*不要*使用initdb,而只使用pg_createcluster。因为仅仅安装 postgresql-XY 就已经设置了一个可以工作的默认集群,所以大多数人根本不需要担心 initdb 或 pg_createcluster。` (8认同)
  • 即使切换到 postgres 用户后,我仍然收到此错误 (4认同)