web-dev-qa-db-fra.com

Impossible de créer/ouvrir le fichier verrou: /data/mongod.lock errno: 13 Autorisation refusée

Comment obtenir que mongo utilise un lecteur monté sur ec2? Je ne comprends vraiment pas. J'ai attaché un volume sur ec2 qui a formaté le disque en tant que root et je commence en tant que root et pourtant, je ne peux pas y accéder? Je cours sur Ubuntu 12.04. Aucun autre mongo ne court

Je vois que mongo a créé un répertoire 'db' dans/data i.e./data/db

cd /
ls -al
drwxr-xr-x  4 root root  4096 Mar  5 16:28 data

cd /data
ls -al
total 28
drwxr-xr-x  4 root root  4096 Mar  5 16:28 .
drwxr-xr-x 24 root root  4096 Mar  5 16:28 ..
drwxr-xr-x  2 root root  4096 Mar  5 16:28 db
drwx------  2 root root 16384 Mar  5 16:20 lost+found


Sudo mkfs.ext3 /dev/xvdh
Sudo mkdir /data
Sudo su - -c 'echo "/dev/xvdh %s auto noatime 0 0" | Sudo tee -a /etc/fstab'
Sudo mount /data

Sudo service mongodb start
mongodb start/running, process 17169

Sudo ps -ef | grep mongod
ubuntu   15763 15634  0 16:32 pts/2    00:00:00 tail -f mongodb.log
ubuntu   18049 15766  0 16:43 pts/3    00:00:00 grep --color=auto mongod


Tue Mar  5 16:33:15 [initandlisten] MongoDB starting : pid=15890 port=27017 dbpath=/data 64-bit Host=aws-mongo-server-east-staging-20130305161917
Tue Mar  5 16:33:15 [initandlisten] db version v2.2.3, pdfile version 4.5
Tue Mar  5 16:33:15 [initandlisten] git version: f570771a5d8a3846eb7586eaffcf4c2f4a96bf08
Tue Mar  5 16:33:15 [initandlisten] build info: Linux ip-10-2-29-40 2.6.21.7-2.ec2.v1.2.fc8xen #1 SMP Fri Nov 20 17:48:28 EST 2009 x86_64 BOOST_LIB_VERSION=1_49
Tue Mar  5 16:33:15 [initandlisten] options: { bind_ip: "10.157.60.27", config: "/etc/mongodb.conf", dbpath: "/data", logappend: "true", logpath: "/var/log/mongodb/mongodb.log", replSet: "heythat" }
Tue Mar  5 16:33:15 [initandlisten] exception in initAndListen: 10309 Unable to create/open lock file: /data/mongod.lock errno:13 Permission denied Is a mongod instance already running?, terminating
Tue Mar  5 16:33:15 dbexit: 
Tue Mar  5 16:33:15 [initandlisten] shutdown: going to close listening sockets...
Tue Mar  5 16:33:15 [initandlisten] shutdown: going to flush diaglog...
Tue Mar  5 16:33:15 [initandlisten] shutdown: going to close sockets...
Tue Mar  5 16:33:15 [initandlisten] shutdown: waiting for fs preallocator...
Tue Mar  5 16:33:15 [initandlisten] shutdown: lock for final commit...
Tue Mar  5 16:33:15 [initandlisten] shutdown: final commit...
Tue Mar  5 16:33:15 [initandlisten] shutdown: closing all files...
Tue Mar  5 16:33:15 [initandlisten] closeAllFiles() finished
Tue Mar  5 16:33:15 [initandlisten] shutdown: removing fs lock...
Tue Mar  5 16:33:15 [initandlisten] couldn't remove fs lock errno:9 Bad file descriptor
Tue Mar  5 16:33:15 dbexit: really exiting now

Ci-dessous se trouve si je redémarre lorsque je supprime un fichier de verrouillage ....

Tue Mar  5 16:59:15 [initandlisten] MongoDB starting : pid=21091 port=27017 dbpath=/data 64-bit Host=aws-mongo-server-east-staging-20130305161917
Tue Mar  5 16:59:15 [initandlisten] db version v2.2.3, pdfile version 4.5
Tue Mar  5 16:59:15 [initandlisten] git version: f570771a5d8a3846eb7586eaffcf4c2f4a96bf08
Tue Mar  5 16:59:15 [initandlisten] build info: Linux ip-10-2-29-40 2.6.21.7-2.ec2.v1.2.fc8xen #1 SMP Fri Nov 20 17:48:28 EST 2009 x86_64 BOOST_LIB_VERSION=1_49
Tue Mar  5 16:59:15 [initandlisten] options: { bind_ip: "10.157.60.27", config: "/etc/mongodb.conf", dbpath: "/data", logappend: "true", logpath: "/var/log/mongodb/mongodb.log", replSet: "heythat" }
Tue Mar  5 16:59:15 [initandlisten] exception in initAndListen: 10309 Unable to create/open lock file: /data/mongod.lock errno:13 Permission denied Is a mongod instance already running?, terminating
Tue Mar  5 16:59:15 dbexit: 
Tue Mar  5 16:59:15 [initandlisten] shutdown: going to close listening sockets...
Tue Mar  5 16:59:15 [initandlisten] shutdown: going to flush diaglog...
Tue Mar  5 16:59:15 [initandlisten] shutdown: going to close sockets...
Tue Mar  5 16:59:15 [initandlisten] shutdown: waiting for fs preallocator...
Tue Mar  5 16:59:15 [initandlisten] shutdown: lock for final commit...
Tue Mar  5 16:59:15 [initandlisten] shutdown: final commit...
Tue Mar  5 16:59:15 [initandlisten] shutdown: closing all files...
Tue Mar  5 16:59:15 [initandlisten] closeAllFiles() finished
Tue Mar  5 16:59:15 [initandlisten] shutdown: removing fs lock...
Tue Mar  5 16:59:15 [initandlisten] couldn't remove fs lock errno:9 Bad file descriptor
Tue Mar  5 16:59:15 dbexit: really exiting now
180
Tampa

Je rencontrais le même problème sur une instance Ubuntu ec2. Je suivais cet article d'Amazon à la page 7:

http://d36cz9buwru1tt.cloudfront.net/AWS_NoSQL_MongoDB.pdf

Le chemin Mongodb dans /etc/mongodb.conf a été défini sur /var/lib/mongodb (emplacement d'installation principal et fonctionnel). Quand j'ai changé pour /data/db (volume EBS) je devenais 'errno: 13 Autorisation refusée'.

  1. J'ai d'abord exécuté Sudo service mongodb stop.
  2. Ensuite, j'ai utilisé ls -la pour voir quel groupe et propriétaire mongodb avait assigné à /var/lib/mongodb (chemin existant) et j'ai changé le /data/db (nouveau chemin) avec chown et chgrp pour correspondre. (exemple: Sudo chown -R mongodb:mongodb /data/db)
  3. Ensuite, j'ai mis à jour le chemin d'accès dans etc/mongodb.conf à /data/db et supprimé les anciens fichiers Mongo dans le répertoire /var/lib/mongodb.
  4. Ensuite, j'ai exécuté Sudo service mongodb start et attendu environ une minute. Si vous essayez de vous connecter immédiatement à 27017, vous ne pourrez pas.
  5. Après une minute, vérifiez /data/db (volume EBS) et mongo aurait dû placer un journal, mongod.lock, local.ns, local.0, etc. Sinon, essayez Sudo service mongodb restart et vérifiez une minute plus tard.

Je viens de passer plus d'une heure avec ça. Changer le groupe et supprimer les anciens fichiers n'est probablement pas nécessaire, mais c'est ce qui a fonctionné pour moi.

Voici une superbe vidéo sur le montage d’un volume ebs sur une instance ec2:

http://www.youtube.com/watch?v=gBIIIIo3BofU

106
Randy Swanson

J'utilise cette méthode pour résoudre le problème:

Sudo chown -R mongodb:mongodb /data/db
475
Haimei

Dans mon cas (instance AWS EC2, Ubuntu) ont aidé:

$ Sudo mkdir -p /data/db/
$ Sudo chown `USERNAME` /data/db

Et après cela, tout a bien fonctionné.

80
Belhor

Il vous suffit de donner accès à votre dossier /data/db

Tapez Sudo chown -R <USERNAME> /data/db, remplacez <USERNAME> par votre nom d'utilisateur. 

Vous pouvez trouver votre nom d'utilisateur en tapant whoami

50
julien bouteloup

J'ai installé mongodb avec EBS sur un EC2 avec Ubuntu 14.04 en suivant ce tutoriel:

http://docs.mongodb.org/ecosystem/platforms/Amazon-ec2/

Mais au lieu du chown suggéré je l'ai fait:

Sudo chown -R mongodb:mongodb /data /log /journal

Pour résoudre le problème

12
Evers

J'avais un problème similaire, la raison réelle étant qu'il y avait déjà une session Mongod en cours depuis ma précédente tentative. 

Iran 

killall mongod

et tout le reste a fonctionné comme prévu.

La commande killall enverrait un signal TERM à tous les processus avec un UID réel. Donc, cela tue toutes les instances en cours d’exécution de mongod afin que vous puissiez démarrer la vôtre. 

9
Venkatesh SGS

Pour les utilisateurs de mac: 
Exécutez ls -ld/data/db/ 
Le résultat devrait ressembler à drwrx-xr-x 20 singh wheel 680 21 juillet 05:49/data/db/
singh est le propriétaire et wheel le groupe auquel il appartient. 
Run Sudo chown -R singh: roue/données/db  
Run mongod  

6
amanSingh

J'ai eu un problème similaire et j'ai suivi toutes les instructions ci-dessus concernant le changement de propriétaires à l'aide de Sudo chown, etc. Il me restait encore une instance de mongodb en arrière-plan après les modifications. Fonctionnement

ps auxw | grep mongo 

m'a montré d'autres tâches utilisant mongo fonctionnant en arrière-plan et qui n'étaient pas fermées correctement. J'ai ensuite exécuté kill sur tous ceux qui fonctionnaient puis je pouvais démarrer mon serveur. 

6
Eugene G

Supprimer le fichier mongodb.lock n'était pas le problème dans mon cas. Je l'ai fait et j'ai eu une erreur concernant le port utilisé: [initandlisten] listen (): bind () a échoué errno: 98 Adresse déjà utilisée pour socket: 0.0.0.0:27017. J'ai trouvé une autre solution ici: impossible de démarrer le serveur local mongodb avec des instructions pour tuer le processus:

  1. Découvrez sur netstat quel processus exécute le port mongodb (27017)

    Sudo netstat -tulpn | grep :27017

    La sortie sera: tcp 0 0 0.0.0.0:27017 0.0.0.0:* LISTEN 1412/mongod

  2. Tuez le processus approprié.

    Sudo kill 1412 (remplacez 1412 par votre ID de processus trouvé à l'étape 1)

Et j’ai pu relancer mongodb avec succès. Je crois que le mien était toujours en train de fuir après une fermeture inappropriée.

4
Casey Murray

Pour ceux d'entre vous rencontrant cette erreur sous Windows en utilisant Task Manager, fermez l'instance de "mongod.exe" en cours d'exécution. Une fois que cela est fait, supprimez définitivement le fichier mongo.lock et exécutez mongod.exe. Cela devrait fonctionner parfaitement après cela.

4
b_kik

Mon mongo (3.2.9) a été installé sur Ubuntu et mon fichier journal contenait les lignes suivantes:

2016-09-28T11:32:07.821+0100 E STORAGE  [initandlisten] WiredTiger (13) [1475058727:821829][6785:0x7fa9684ecc80], file:WiredTiger.wt, connection: /var/lib/mongodb/WiredTiger.turtle: handle-open: open: Permission denied 
2016-09-28T11:32:07.822+0100 I -        [initandlisten] Assertion: 28595:13: Permission denied 
2016-09-28T11:32:07.822+0100 I STORAGE  [initandlisten] exception in initAndListen: 28595 13: Permission denied, terminating

2016-09-28T11: 32: 07.822 + 0100 I CONTROL [initandlisten] dbexit: rc: 100

Le problème était donc dans les autorisations sur le dossier/var/lib/mongodb.

Sudo chown -R mongodb:mongodb /var/lib/mongodb/
Sudo chmod -R 755 /var/lib/mongodb
  • Redémarrer le serveur

Corrigé, bien que je me rende compte que ce n’est peut-être pas trop sécurisé (c’est ma propre boîte de dev que je suis dans mon cas), peu après le changement, la base de données et l’authentification ont fonctionné. 

3
Nestor Milyaev

Dans mon cas
Dans mongodb version 2.6.11, le répertoire de base de données par défaut est /var/lib/mongodb/

  1. $ Sudo chown -R id -u/var/lib/mongodb / 

  2. $ Sudo chown -R id -u /var/lib/mongodb/mongod.lock

  3. $ Sudo /etc/init.d/mongod stop 

  4. $ Sudo /etc/init.d/mongod start

2
vijay

Voici ce que j'ai fait pour résoudre le problème: 

$ Sudo mkdir -p/data/db

$ export PATH =/usr/local/Cellar/mongodb/3.0.7/bin: $ PATH

$ Sudo chown -R id -u/data/db

et ensuite commencer mongo ...

$ Mongod

1
user4660857

Dans mon cas, le problème a été résolu en supprimant le fichierlog.

Sudo rm /log/mongod.log

Bien que le message d'erreur se réfère spécifiquement au fichierlock:

exception in initAndListen: 10309 Unable to create/open lock file: 
/data/mongod.lock errno:13 Permission denied 
Is a mongod instance already running?, terminating
1
Ian Mercer

Après avoir tué Mongod, je n'ai plus eu que le même problème: je ne pouvais pas démarrer Mongod.

$> Sudo kill `pidof mongod`

2015-08-03T05:58:41.339+0000 [initandlisten] exception in initAndListen: 10309 Unable to create/open lock file: /data/mongodbtest/replset/data/mongod.lock errno:13 Permission denied Is a mongod instance already running?, terminating

Après avoir supprimé le verrou directement, je peux redémarrer le processus mongod.

$>  rm -rf /data/mongodbtest/replset/data/mongod.lock
1
Andy Dong

Sur une instance de Fedora 18 avec Mongo 2.2.4, j'ai pu contourner une erreur similaire en désactivant SELinux en appelant setenforce 0 en tant que root.

En passant, il s'agissait d'un environnement d'entreprise, pas d'une instance Amazon EC2, mais les symptômes étaient similaires.

1
GSP

Si vous voulez littéralement un équivalent d'une ligne aux commandes de votre question initiale, vous pouvez également créer un alias:

mongo --eval "db.getSiblingDB('admin').shutdownServer()"

https://stackoverflow.com/a/11777141/7160782

0
Mohammad Bayat

Sous Windows, assurez-vous que la console est démarrée en tant qu'administrateur.

0
Iacobescu Radu

Pour moi sur CentOS 6.x:

Sudo chown -R mongodb:mongodb <db-path> Sudo service mongod restart

Et j'ai défini un db-path personnalisé dans /etc/mongod.conf.

0
osrpt

J'ai eu le même problème. 

Je l'ai résolu en changeant le statut de selinux en permissif avec la commande ci-dessous:

setenforce 0
0
Maryam Jafari

Faites ls -lapour connaître l'utilisateur et le groupe de /var/log/mongodb.Alors faites Sudo chown -R user:group /data/dbMaintenant, lancez Sudo service mongodb start. Vérifier l’état avec Sudo service mongodb status

0
Tasneem Haider

Dans Centos Server

ça marche pour moi

chown -R mongod:mongod /var/lib/mongo
0
Rajiv Sharma

J'ai eu le même problème lorsque j'ai exécuté la commande mongod après l'avoir installée sur Windows 10. J'ai arrêté le service Mongodb et l'ai redémarré. Travailler comme un charme

Commande pour arrêter le service mongodb (sous Windows): net stop mongodb

Commande pour démarrer le serveur mongodb: mongod --dbpath PATH_TO_DATA_FOLDER

0
aditya

Vous pouvez essayer par ces moyens . 1er.

Sudo chown -R mongod: mongod/data/db

mais à certains moments, cela n'est pas utile . 2nd . si la méthode ci-dessus n'est pas utile, vous pouvez essayer de faire ceci:

mkdir/data/db # comme chemin de stockage de la base de données

Nohup mongod --dbpath/data/db &

ou type:

mongod --dbpath/data/db

pour obtenir le flux de sortie

0
Wotchin