Instale o postgresql. Por que o initdb não está disponível?


15

Estou seguindo estas instruções , no entanto, só consigo chegar à etapa 17.2.

Apesar de instalar o postgresql com sucesso através do

sudo apt-get install postgresql

comando, ao executar

initdb -D /usr/local/pgsql/data

O Ubuntu me diz que o 'initdb' não está instalado. As instruções informam que este comando é instalado pelo

sudo apt-get install postgresql

então o que está acontecendo? Posso disponibilizar o initdb instalando o postgres-xc, mas acho que o postgres-xc é apenas um lixo estranho de terceiros, e não é detalhado nas instruções. Alguma ideia?

Respostas:


14

initdbdeve ser executado na conta de usuário do postgres criada durante a instalação. Depois de instalar o postgresql, você pode:

sudo su - postgres

Então você deve ser capaz de executar initdb.


4
Citação de /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
Mesmo após a mudança para o usuário postgres Eu ainda obter este erro
Cogwheel

Isso não funciona para mim no Ubuntu Server 14 usando o Postgres 9.6.
Sudo

Ele não funciona, uma vez que initdbestá em /usr/lib/postgresql/X.X/bin/.
Li Dong

27

Você encontrará initdbabaixo /usr/lib/postgresql/x.y/bin/. Veja também /usr/share/doc/postgresql-common/README.Debian.gzpara mais informações sobre a configuração no Debian e Ubuntu.


Esta realmente deve ser a resposta aceita. initdbé o comando subjacente, mas os usuários do Debian e Ubuntu devem usar pg_createcluster e seu conjunto de comandos relacionado. Além disso, você normalmente não precisa initdbOU pg_createclusterdepois, apt-get install postgresqlporque a instalação padrão já cria um cluster padrão, com um servidor e bancos de dados padrão / modelo, para você. O README que Peter menciona acima vale a pena ler.
Cdaddr

2
@cdaddr Não, você normalmente não precisa disso depois de instalar o postgres. Ainda assim, se você precisar recriar um cluster rapidamente e não quiser se preocupar com a reinstalação do postgres ou se precisar inicializar um novo banco de dados em um local não padrão, isso pode ser útil. Então, sim, esta é uma ótima resposta.
precisa saber é o seguinte

1
Trabalho. E é o melhor, porque dessa maneira posso ter certeza de qual versão estou usando.
Sudo

estamos procurando pelo initdb porque, segundo o tutorial, postgresql.org/docs/10/static/creating-cluster.html
nerkn

2

initdbnão está instalado como executável pelo usuário. É instalado apenas /usr/lib/postgresql/X.X/bin/porque depende sempre da versão. initdbsó pode ser executado a partir desse diretório específico.

Como mencionado em outras respostas, a instalação do postgres cria um diretório padrão que pode estar em uma partição limitada. Os usuários podem querer mudar isso, mas isso requer outras etapas também. veja aqui .


-2

siga as etapas abaixo na raiz 1.passwd postgres sua senha e depois 2.su postgres 3.psql 4. crie um usuário com seu nome de usuário como "CREATE USER SAM;" 5. criar banco de dados sam; agora efetue logout 6.type psql no seu usuário


Esta resposta não aborda a questão diretamente.
Cdaddr
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.