2011-05-12 21 views
18

antes me estaba almacenando todos los archivos de datos MongoDB en/var/lib/mongodb directory..and la entrada dbpath en /etc/mongodb.conf era/var/lib/mongodb ..mongodb permisos de directorio de datos

Ahora quiero cambiar el directorio de datos a/vol/db ... así que creé el directorio/vol/db y cambié los permisos usando sudo chown -R id -u/vol/db y cambié la entrada de ruta db a/vol/db en /etc/mongodb.conf

ahora cuando inicio el mongodb utilizando el servicio sudo mongodb start..i estoy recibiendo este error en /var/log/mongodb/mongodb.log

http://pastebin.com/C0tv8HQN

necesito ayuda ... ¿dónde estoy equivocado?

+0

estoy usando sudo chown -R id -u/vol/db y sudo chown -R nombre de usuario: nombre de usuario/vol/db –

+1

¿Se puede pegar la salida de ls -altrh/vol y ls -altrh/vol/db? – lobster1234

+0

Estoy teniendo el mismo problema, ¿puede responder de nuevo si ha resuelto esto? – zubinmehta

Respuesta

27

Estaba teniendo el mismo problema, pero pude resolverlo gracias a un similar question. Debe asegurarse de que /vol/db/ es propiedad de mongodb.

sudo chown -R mongodb:mongodb /vol/db/ 

Si se obtiene el error chown: invalid user: 'mongodb:mongodb', comprobar /etc/passwd para ver si hay un usuario similar que existe (ex. mongod).

+2

¿Qué sucede si obtengo un error de usuario no válido y no hay nada en/etc/passwd similar – TMin

+0

en caso de que mi nombre de servicio sea 'mongod', ¿cuál será mi usuario: grupo? – Darpan

+0

probablemente mongod, intente: grupos mongod – igorludi

4

Si después de cambiar los permisos y la propiedad de la nueva ruta de acceso de db, todavía está viendo este problema, ejecute getenforce para ver si está utilizando un sistema con SELinux ejecutándose en modo de aplicación. Si getenforce devuelve 'enforcing', es probable que selinux sea la causa del error de permisos, ya que mongodb se está ejecutando fuera de su contexto de contexto original desde que la ubicación db cambió de/var/lib/...

I don sé los detalles, pero una forma de fuerza bruta a continuación para resolver el problema sin necesidad de escribir su propia política de SELinux para el nuevo contexto es simplemente desactivar SELinux: -/

sudo setenforce 0 

lo ideal sería encontrar la manera para actualizar la política de selinux si planea ejecutar en producción.

15

Lo más fácil sería

sudo chmod 777 /data/db 
+0

esto funcionó para mí ... cuando ejecuté sudo chown mongodb: mongoDB/vol/db recibí: "nombre de grupo ilegal" ... esta solución funcionó – hanzolo

+0

obtuve lo mismo que hanzolo. Éste trabajó para mí. – MLyck

+8

Este comando otorgará permisos muy abiertos al directorio en cuestión.La respuesta de @Kaezarrex ('sudo chown mongodb: mongodb/data/db') debería tener el efecto deseado sin abrir los permisos tan ampliamente. –

1

sugiero para comprobar cuál es el error mediante la lectura de registro mongo

tail -50 /var/log/mongodb/mongodb.log 

puede encontrar inmediatamente el problema (incluyendo los permisos)

0

Try el siguiente:

$ sudo chmod 755 /vol/db && sudo chown $USER /vol/db 
Cuestiones relacionadas