J'ai essayé d'installer mongoDB sur mon MacBook Air.
J'ai téléchargé le fichier compressé à partir du site web officiel et extrait ce fichier et je passe dans le répertoire racine . Après cela, dans ce répertoire, j'ai créé le dossier/data/db et/log.
Voici mon mongodb.config
qui décrit la configuration de base pour ma base de données.
dbpath = /mongodb/data/db
logpath = /mongodb/log/mongo.log
logappend = true
#bind ip = 127.0.0.1
port = 27017
fork = true
rest = true
verbose = true
#auth = true
#noauth = true
De plus, je veux savoir ce que le #
signifie dans le fichier de configuration.
Je mets ce fichier à /mongodb/bin
, /mongodb
est le répertoire dans lequel j'ai extrait les fichiers.
J'ai ouvert le terminal et entré ./mongod --config mongodb.config
et je l'ai récupéré.
Juneyoung-ui-MacBook-Air:bin juneyoungoh$ ./mongod --config mongodb.config
about to fork child process, waiting until server is ready for connections.
forked process: 1775
all output going to: /mongodb/log/mongo.log
ERROR: child process failed, exited with error number 100
Comment puis-je gérer cette erreur et ce que cela signifie?
Les dossiers de données que vous avez créés ont très probablement été créés avec Sudo
, oui? Ils appartiennent à root
et ne sont pas accessibles en écriture à votre utilisateur normal. Si vous êtes le seul utilisateur de votre macbook, changez alors la propriété des répertoires:
Sudo chown juneyoungoh /data
Sudo chown juneyoungoh /data/db
Sudo chown juneyoungoh /data/log
Si vous envisagez de l'installer sur une machine publique ou dans un lieu légitime, renseignez-vous davantage sur les pratiques de sécurité des mongos ailleurs. Je vais juste te faire courir sur ton macbook.
J'ai eu un problème similaire et il n'était pas lié à un problème 'Sudo'. J'essayais de me remettre d'une panique au noyau!
Quand je regarde mon dossier de données, j'ai découvert qu'un fichier mongod.lock était là. Dans mon cas, cette page a beaucoup aidé: http://docs.mongodb.org/manual/tutorial/recover-data-following-unexpected-shutdown/ . Comme ils l'expliquent,
si le fichier mongod.lock n'est pas un fichier de zéro octet, alors mongod refusera de démarrer.
J'ai testé cette solution dans mon environnement et cela fonctionne parfaitement:
mongod.lock
.mongod --dbpath /your/db/path --repair
mongod --dbpath /your/db/path
Il y avait le même problème sur ma machine. Dans le fichier journal était:
Lun 29 juillet 09: 57: 13.689 [initandlisten] ERREUR: espace libre insuffisant pour le fichier journal
Lundi 29 juillet 09h57: 13,689 [initandlisten] Veuillez mettre au moins 3379MB à disposition dans/var/mongoexp/rs2/journal ou utilisez --smallfiles
Il a été résolu en utilisant mongod --smallfiles
. Ou si vous démarrez Mongod avec l'option --config , dans un fichier de configuration, désactivez la journalisation à écriture anticipée de nojournal=true
(supprimez le numéro de début). Un peu plus d'espace disque résoudrait également le problème ci-dessus.
Problème similaire avec la même erreur - J'essayais d'exécuter le script de réparation Sudo -u mongodb mongod -f /etc/mongodb.conf --repair
Vérifié ps aux | grep mongo
et voir que le démon était en cours d'exécution. Arrêtez-le et le script de réparation s'exécute sans problème.
J'espère que cela pourrait être utile à quelqu'un d'autre.
C'est parce que vous n'avez probablement pas arrêté mongodb correctement et que vous ne démarrez pas mongodb correctement. Selon votre mongodb.config
, vous avez dbpath = /mongodb/data/db
- donc je suppose que vous avez créé le référentiel /mongodb/data/db
? Permettez-moi de clarifier toutes les étapes.
Dans votre mongodb.config
, changez le dbpath = /mongodb/data/db
en dbpath = /data/db
. Sur votre terminal, créez le référentiel de base de données en tapant: mkdir /data/db
. Vous avez maintenant un référentiel - vous pouvez démarrer votre mongo.
Pour démarrer mongo en arrière-plan, tapez: mongod --dbpath /data/db --fork --logpath /dev/null
.
/data/db
est l'emplacement de la base de données. --fork
signifie que vous voulez démarrer mongo en arrière-plan - désamon.--logpath /dev/null
signifie que vous ne voulez pas vous connecter - vous pouvez changer cela en remplaçant /dev/null
par un chemin tel que /var/log/mongo.log
Connectez-vous à votre mongo en tapant: mongo
puis use admin
et db.shutdownServer()
. Comme expliquer dans mongoDB
Si cette technique ne fonctionne pas pour une raison quelconque, vous pouvez toujours arrêter le processus.
Recherchez le PID du processus mongodb en tapant: lsof -i:27017
en supposant que votre mongodb s'exécute sur le port 27017
Tapez kill <PID>
, remplacez <PID>
par la valeur que vous avez trouvée la commande précédente.
J'ai eu la même erreur sur linux (Centos) et cela a fonctionné pour moi
Supprimer mongod.lock de la dbpath
$ rm /var/lib/mongo/mongod.lock
Réparer le processus mongod
$ mongod --repair
Exécuter la configuration Mongod
$ mongod --config /etc/mongod.conf
Généralement, cette erreur survient lorsque le fichier mongod.conf ne parvient pas à trouver un certain chemin pour. permission du fichier pour accéder aux répertoires de configuration et aux fichiers déclarés dans mongod.conf
pour résoudre cette erreur, nous devons observer le journal généré par MongoDBit indiquera clairement si le fichier ou le répertoire auquel vous ne pouvez pas accéder à MongoDB
l'erreur ci-dessus peut ressembler à l'image ci-dessous screenshot
J'ai eu la même erreur. Je l'ai exécuté de manière interactive pour voir le journal.
2014-10-21T10:12:35.418-0400 [initandlisten] ERROR: listen(): bind() failed errno:48 Address already in use for socket: 0.0.0.0:27017
Ensuite, j'ai utilisé lsof
pour savoir quel processus utilisait mon port.
$ lsof -i:27017
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
mongod 2106 MYUSERID 10u IPv4 0x635b71ec3b65b4a1 0t0 TCP *:27017 (LISTEN)
C’était un mongod
que j’avais précédemment branché et que j’avais oublié de désactiver (car je ne l’avais pas vu tourner dans ma fenêtre bash) . Le tuer simplement en exécutant kill 2106
, permettait à mon processus de s’exécuter sans le erreur 100.