MongoDB: impossible d’ouvrir/data/db/yourdb.ns errno: 13 Autorisation refusée

MongoDB: impossible d'ouvrir /data/db/yourdb.ns errno: 13 Autorisation refusée

Au démarrage du serveur MongoDB, il affiche l'erreur «Autorisation refusée» sur l'une des bases de données et arrête le serveur automatiquement.

$ mongod
Fri Mar  8 22:54:46 [initandlisten] MongoDB starting : pid=13492
    port=27017 dbpath=/data/db/ 64-bit host=Yongs-MacBook-Air.local
//...
Fri Mar  8 22:54:46 [initandlisten] journal dir=/data/db/journal
Fri Mar  8 22:54:46 [initandlisten] recover : no journal files present, no recovery needed
Fri Mar  8 22:54:46 [initandlisten] couldn't open /data/db/yourdb.ns errno:13 Permission denied
Fri Mar  8 22:54:46 [initandlisten] error couldn't open file /data/db/yourdb.ns terminating
Fri Mar  8 22:54:46 dbexit:
Fri Mar  8 22:54:46 [initandlisten] shutdown: going to close listening sockets...
Fri Mar  8 22:54:46 [initandlisten] shutdown: going to flush diaglog...
Fri Mar  8 22:54:46 [initandlisten] shutdown: going to close sockets...
Fri Mar  8 22:54:46 [initandlisten] shutdown: waiting for fs preallocator...
Fri Mar  8 22:54:46 [initandlisten] shutdown: lock for final commit...
Fri Mar  8 22:54:46 [initandlisten] shutdown: final commit...
Fri Mar  8 22:54:46 [initandlisten] shutdown: closing all files...
Fri Mar  8 22:54:46 [initandlisten] closeAllFiles() finished
Fri Mar  8 22:54:46 [initandlisten] journalCleanup...
Fri Mar  8 22:54:46 [initandlisten] removeJournalFiles
Fri Mar  8 22:54:46 [initandlisten] shutdown: removing fs lock...
Fri Mar  8 22:54:46 dbexit: really exiting now

Solution

Le message d'erreur indique que vous n'êtes pas autorisé à accéder à la base de donnéesyourdb.ns. Vérifiez le répertoire de données MongoDB/data/db/, la base de donnéesyourdb.ns appartient à l'utilisateur root.

$ ls -ls /data/db

      0 drwxr-xr-x  2 example  wheel          68 Mar  8 22:54 journal
 131072 -rw-------  1 root    wheel    67108864 Mar  7 17:01 yourdb.0
 262144 -rw-------  1 root    wheel   134217728 Mar  7 16:15 yourdb.1
  32768 -rw-------  1 root    wheel    16777216 Mar  7 17:01 yourdb.ns

$whoami
example

Pour le corriger, attribuez une autorisation à la base de données.

$ sudo chown -R example /data/db

$ ls -ls /data/db

      0 drwxr-xr-x  2 example  wheel          68 Mar  8 22:54 journal
 131072 -rw-------  1 example  wheel    67108864 Mar  7 17:01 yourdb.0
 262144 -rw-------  1 example  wheel   134217728 Mar  7 16:15 yourdb.1
  32768 -rw-------  1 example  wheel    16777216 Mar  7 17:01 yourdb.ns