2012-05-03 25 views
19

Estoy siguiendo el RailsCast reciente al configurar PostgreSQL, pero no puedo ejecutar el comando initdb /usr/local/var/postgres. Cada vez que lo ejecuto, aparece este error:Intentando instalar Postgres en mi entorno pero parece que no puedo obtener permisos para intidb

The files belonging to this database system will be owned by user "Construct". 
This user must also own the server process. 

The database cluster will be initialized with locale en_US.UTF-8. 
The default database encoding has accordingly been set to UTF8. 
The default text search configuration will be set to "english". 

creating directory /usr/local/var/postgres ... initdb: could not create directory "/usr/local/var": Permission denied 
+0

¿Ha resuelto el problema? – swasheck

+1

Tengo el mismo problema ... todavía no he encontrado una solución. – fccoelho

Respuesta

45

Esto debería funcionar bien:

# sudo mkdir /usr/local/var/postgres 
# sudo chmod 775 /usr/local/var/postgres 
# sudo chown construct /usr/local/var/postgres 
# initdb /usr/local/var/postgres 

usar su nombre de usuario en lugar del constructo . Por lo tanto, si su nombre de usuario del ordenador es WDurant, el código será:

# sudo chown wdurant /usr/local/var/postgres 
+3

'sudo chown $ (whoami)/usr/local/var/postgres /' – jhrr

+1

Lamento escuchar que has estado teniendo tales problemas @Geuis. Debería haber agregado un contexto para indicar que solo estaba tratando de mostrar que 'sudo chown $ (whoami)/usr/local/var/postgres /' es solo una forma de determinar programáticamente tu nombre de usuario con '$ (whoami)' de tener que escribirlo como en 'sudo chown wdurant/usr/local/var/postgres'. Espero que puedas resolverlo todo, en cualquier caso. Buena suerte. – jhrr

+1

Gracias @jhrr. Lo siento por el desagradable comentario de anoche. En realidad, no fue dirigido hacia usted personalmente. Solo un poco de frustración en mi parte tratando de obtener esta configuración. Eliminé el comentario anterior, pero dejaré esta sección aquí para cualquier otra persona que lo necesite en el futuro. "El problema no es solo el propietario, son los permisos en el directorio. Ninguna otra respuesta ha señalado la necesidad de ajustar las permanentes del directorio. Chmod 755 en el directorio" – Geuis

3

¿Con qué usuario está ejecutando initdb? Si no eres root, probablemente no tengas permiso para crear directorios en/usr/local. Sugiero crear/postgres/var/local/usr como raíz y chown'ing a construir:

# mkdir -m 0700 -p /usr/local/var/postgres 
# chown construct /usr/local/var/postgres 

Luego, su initdb (ejecutar como constructo) debe tener permiso.

Además, tenga en cuenta que los nombres de usuario de Unix suelen ser minúsculas (pero también distinguen entre mayúsculas y minúsculas); ¿Está seguro su usuario de Construir está realmente en mayúscula? Si es así, ¿está realmente seguro que desea que esté en mayúscula? Muchas cosas se romperán.

(FYI: Para preguntas Unix como éste, es posible Unix.SE o Ask Ubuntu dar respuestas más rápidas)

5

que realmente necesita para SU al usuario postgres

  • sudo su - postgres

entonces puede ejecutar el comando

  • initdb -E UTF8 (I prefieren establecer esto ahora porque UTF8 es bastante flexible y esto creará todos los clústeres como UTF8 [a menos que se especifique expresamente lo contrario])

entonces usted necesita para crear su usuario (si no tiene ya ha sido creado)

  • $ createuser -s -U postgres
  • $ Enter name of role to add: {{ my login name }} (esto parece ser Construct)

entonces usted puede salir de Postgres de usuario y usted puede crear su propia base de datos

  • $ createdb
2

Si se ejecuta en Linux arco, utilice la siguiente manera:

sudo mkdir /var/lib/postgres 
    sudo chmod 775 /var/lib/postgres 
    sudo chown postgres /var/lib/postgres 

    sudo -i -u postgres 

    [postgres]$ initdb --locale $LANG -E UTF8 -D '/var/lib/postgres/data' 
    [postgres]$ exit 

    sudo systemctl start postgresql.service 

    sudo -i -u postgres 
+0

Impresionante: se utiliza para crear un directorio de datos personalizado. :-RE –

Cuestiones relacionadas