Instala postgresql. ¿Por qué initdb no está disponible?


15

Estoy siguiendo estas instrucciones , sin embargo, solo puedo llegar al paso 17.2.

A pesar de instalar postgresql con éxito a través de

sudo apt-get install postgresql

comando, al correr

initdb -D /usr/local/pgsql/data

Ubuntu me dice que 'initdb' no está instalado. Las instrucciones me dicen que este comando es instalado por

sudo apt-get install postgresql

Entonces, ¿qué está pasando? Puedo hacer que initdb esté disponible instalando postgres-xc, pero creo que postgres-xc es solo una basura extraña de terceros, y no se detalla en las instrucciones. ¿Algunas ideas?

Respuestas:


14

initdbestá destinado a ejecutarse en la cuenta de usuario de postgres que se crea durante la instalación. Después de instalar postgresql puedes hacer:

sudo su - postgres

Entonces deberías poder correr initdb.


44
Citando 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
Incluso después de cambiar al usuario de postgres, sigo recibiendo este error
Cogwheel

Esto no funciona para mí en Ubuntu Server 14 con Postgres 9.6.
sudo

No funciona, ya que initdbestá adentro /usr/lib/postgresql/X.X/bin/.
Li Dong

27

Lo encontrarás initdbdebajo /usr/lib/postgresql/x.y/bin/. Consulte también /usr/share/doc/postgresql-common/README.Debian.gzpara obtener más información sobre la configuración en Debian y Ubuntu.


Esta realmente debería ser la respuesta aceptada. initdbes el comando subyacente, pero los usuarios de Debian y Ubuntu deberían usar pg_createcluster y su conjunto de comandos relacionados. Además normalmente no es necesario initdbo pg_createclusterdespués apt-get install postgresqldebido a que la norma ya instalar crea un clúster predeterminado, con un servidor por defecto y / plantilla bases de datos, para usted. El archivo README que Peter menciona anteriormente vale la pena leerlo.
cdaddr

2
@cdaddr No, generalmente no lo necesita después de instalar postgres. Aún así, si necesita recrear un clúster rápidamente y no quiere molestarse en reinstalar postgres o si necesita inicializar una nueva base de datos en una ubicación no estándar, esto puede ser útil. Entonces sí, esta es una gran respuesta.
Erathiel el

1
Trabajos. Y es lo mejor porque de esta manera puedo estar seguro de qué versión estoy usando.
sudo

estamos buscando initdb porque, según el tutorial, postgresql.org/docs/10/static/creating-cluster.html
nerkn

2

initdbno está instalado como ejecutable por el usuario. Solo se instala en /usr/lib/postgresql/X.X/bin/, porque siempre depende de la versión. initdbsolo se puede ejecutar desde ese directorio específico.

Como se menciona en otras respuestas, la instalación de postgres crea un directorio predeterminado que puede estar en una partición limitada. Los usuarios pueden querer cambiar esto, pero también requiere otros pasos. ver aquí .


-2

siga los siguientes pasos desde la raíz 1.passwd postgres su contraseña y luego 2.su postgres 3.psql 4. cree el usuario de su nombre de usuario como "CREAR USUARIO SAM"; 5.crear base de datos sam; ahora cierre sesión 6.type psql a su usuario


Esta respuesta no aborda la pregunta directamente en absoluto.
cdaddr
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.