start - unable to locate package mongodb-org
mongodb 3.4.3 Permiso denegado wiredtiger_kv_engine.cpp 267 error con ubuntu 16 (4)
Tengo problemas para utilizar mongod como servicio: ¿Cómo es posible que funcione cuando hago sudo mongod -f /etc/mongod.conf pero cuando lo ejecuto con sudo service mongod start me aparece un error en el registro?
Assertion: 28595:13: Permission denied src/mongo/db/storage/wiredtiger/wiredtiger_kv_engine.cpp 267
Estoy ejecutando mongodb en ubuntu 16
Seguí exactamente las instrucciones en la documentación de mongodb para la instalación de esa versión, ¿es esto un error? Cualquier sugerencia de como resolver esto es apreciada.
Información Adicional:
El script de inicio del servicio mongodb tiene este aspecto y se ejecuta como mongodb de usuario, ¿podría estar conectado al error? lib / systemd / system / mongodb.service:
[Unit]
Description=MongoDB Database Service
Wants=network.target
After=network.target
[Service]
ExecStart=/usr/bin/mongod --config /etc/mongod.conf
ExecReload=/bin/kill -HUP $MAINPID
Restart=always
User=mongodb
Group=mongodb
StandardOutput=syslog
StandardError=syslog
[Install]
WantedBy=multi-user.target
Tengo problemas para utilizar mongod como servicio: ¿Cómo es posible que funcione cuando hago sudo mongod -f /etc/mongod.conf pero cuando lo ejecuto con sudo service mongod start me aparece un error en el registro?
El comando sudo
inicia mongod
con permisos de root
(también conocido como acceso de superusuario ). Si ejecuta mongod
como un servicio, el usuario y el grupo están configurados en la definición de servicio ( mongodb
para ambos en su ejemplo).
No hay necesidad de ejecutar el proceso mongod
como usuario root
, y esto se desaconseja por la práctica común de seguridad de Principio de privilegio mínimo .
Si desea probar una configuración desde la línea de comandos, puede usar sudo
para ejecutar con un usuario específico en lugar del usuario predeterminado (raíz).
Por ejemplo:
sudo -u mongodb mongod -f /etc/mongod.conf
En general, es mejor usar una configuración de servicio en lugar de ejecutar mongod
manualmente. Con la invocación manual también deberá recordar incluir parámetros como la ruta del archivo de configuración (ya que no hay una ruta de configuración predeterminada). Sin un archivo de configuración, mongod
también usa opciones predeterminadas, como dbPath
de /data/db
.
Afirmación: 28595: 13: Permiso denegado src / mongo / db / storage / wiredtiger / wiredtiger_kv_engine.cpp 267
La causa probable de sus errores de permiso es haber iniciado previamente mongod
como usuario root
. Algunos directorios y archivos ahora pueden ser propiedad del usuario root, por lo que el usuario mongodb
no puede acceder a ellos. Su error específico está relacionado con el acceso a los archivos en el directorio de datos (es decir, el mongod.conf
configurado en mongod.conf
).
Suponiendo que no haya cambiado las rutas predeterminadas en su archivo mongod.conf
, debería poder ajustar recursivamente los permisos para que coincidan con lo que espera la definición de mongod.service
.
Primero, asegúrese de haber detenido su instancia de mongod
si se está ejecutando actualmente.
Luego, ajuste recursivamente los permisos para el usuario y grupo esperado:
# storage.dbPath
sudo chown -R mongodb:mongodb /var/lib/mongodb
# systemLog.path
sudo chown -R mongodb:mongodb /var/log/mongodb
Ahora debería poder iniciar mongod
como un servicio. Si el servicio no se inicia, debería haber más detalles en el archivo de registro mongod
(suponiendo que el usuario del servicio mongodb
escribir el archivo de registro).
Deseo adjuntar un comentario a la respuesta anterior, pero lamentablemente todavía no puedo.
Estoy completamente de acuerdo con la explicación de Stennie. Es exactamente lo que me pasó. Siempre he ejecutado mongod como un servicio, pero hoy, debido a algunos cambios que he realizado, he intentado ejecutar el proceso utilizando sudo mongod --auth --dbpath /data/mongodb/
.. para probar autorizaciones y db cambio de ubicación. Después de eso, el servicio mongod ya no se ejecutó debido a este problema de permisos.
Tengo que decir que el comando sudo chown -R mongodb:mongodb /data/mongodb/
no solucionó el problema inmediatamente como se esperaba. Tuve que reiniciar varias veces, eliminar el archivo mongod.lock
en /data/mongodb/
, volver a emitir el comando sudo chown
... y finalmente todo salió bien.
Hay tres configuraciones que provocan este tipo de problema:
- La instalación de MongoDB está configurada para crear archivos de base de datos en una ruta determinada y esta ruta no existe en su sistema actual. Este camino se llama dbpath en mongo.
En su caso, compruebe si /data/db
existe. Si no lo hace o si está vacío, mongod está intentando la ruta dbpath incorrecta. Necesitas encontrarlo, generalmente está bajo /var/lib/mongodb
.
Una vez que lo encuentras hay dos cosas que puedes hacer. Primero, copie todo el archivo desde allí a /data/db
. En segundo lugar, cambie su dbpath bajo el archivo mongod.conf, que se encuentra (en linux) en /etc/mongod.conf
. Asegúrese de iniciar mongod con --config
especificando el archivo de configuración.
- MongoDB no tiene permiso para leer uno o más archivos o directorios correspondientes a su dbpath.
chown mongodb:mongodb dbpath -R
.
- Falta MongoDB en WiredTiger.wt. Esto puede suceder si elimina archivos bajo la ruta de acceso de datos o si hay un error en el dispositivo. Lo hacemos para probar una estrategia de recuperación, por ejemplo.
Si está seguro de que dbpath es correcto y que no hay ninguna instancia de WiredTiger.wt allí. Su base de datos está rota. No hay formas de asegurar la integridad si pierde este archivo. Reinstalar mongodb por:
sudo apt-get purge mongodb-org*
sudo rm -r dbpath
sudo apt-get install mongodb-org
Edición: O copie dbpath desde una de sus réplicas.
Tiene el mismo problema
Lo que ha estado en /var/log/mongodb/mongod.log:
2017-05-13T13:46:41.152+0700 E STORAGE [initandlisten] WiredTiger error (13) [1494658001:152518][15821:0x7fb843803cc0], connection: /var/lib/mongodb/journal/WiredTigerPreplog.0000000002: file-remove: unlink: Permission denied
2017-05-13T13:46:41.159+0700 I - [initandlisten] Assertion: 28595:13: Permission denied src/mongo/db/storage/wiredtiger/wiredtiger_kv_engine.cpp 267
Así que vemos que algo no puede eliminar el archivo "WiredTigerPreplog.0000000002" en / var / lib / mongodb / journal / So id solo le di permisos, acabo de hacerlo:
sudo chmod 764 /var/lib/mongodb/journal/
Si no es de ayuda, intente:
sudo chown -R mongodb:mongodb /var/lib/mongodb/ && sudo chmod 764 /var/lib/mongodb/journal/