J'essaie de configurer mon script de démarrage mongodb pour qu'il fonctionne en tant qu'arbitre, mais je rencontre des problèmes d'autorisations lorsque j'essaie de créer le fichier de verrouillage dans le répertoire de données:
Tue Apr 1 17:11:01 [initandlisten] options: { config: "/etc/mongodb.conf", dbpath: "/tmp/arb", journal: "true", logappe
nd: "true", logpath: "/var/log/mongodb/mongodb-arbiter.log", port: 27017, replSet: "rs1" }
Tue Apr 1 17:11:01 [initandlisten] exception in initAndListen: 10309 Unable to create/open lock file: /tmp/arb/mongod.l
ock errno:13 Permission denied Is a mongod instance already running?, terminating
Il n'y a définitivement aucun fichier de verrouillage présent et aucun autre processus mongod
n'est en cours d'exécution (ps -A | grep mongod
ne renverra rien).
Aussi, quand j'essaie de démarrer le processus mongod
mongod --fork --port 27017 --dbpath /data/arb --replSet rs1 --logpath /var/log/mongodb.log
cela produira également la même erreur si vous n'êtes pas Sudo
ed.
Comment puis-je configurer les bonnes autorisations pour que le script upstart puisse écrire des données dans /data/arb
?
Vous devez disposer des autorisations sur ce dossier (et tout ce qui se trouve en dessous) de sorte que l'utilisateur mongodb
puisse y écrire. La raison pour laquelle il travaille avec Sudo
est que l'utilisateur root
dispose de ces autorisations, quel que soit le propriétaire/groupe. En fait, c’est peut-être là la cause première: lorsque vous exécutez le processus mongod
avec Sudo, il crée les fichiers avec la propriété root:root
auxquels l’utilisateur normal de mongodb ne peut pas accéder.
Le user:group
de MongoDB sur Ubuntu est généralement mongodb:mongodb
, par conséquent, procédez comme suit:
cd /tmp/arb
Sudo chown -R mongodb:mongodb .
Puisque vous utilisez un arbitre ici, je vous recommanderais également les options suivantes dans votre fichier de configuration (remarque: ne pas utiliser sur un nœud de données ordinaire - arbitre uniquement):
Ces paramètres minimiseront l'empreinte de l'arbitre sur l'hôte.