sql >> Database >  >> NoSQL >> MongoDB

Mongod klaagt dat er geen map /data/db is

Je hebt de map op de verkeerde plaats gemaakt

/data/db betekent dat het direct onder de '/' root directory staat, terwijl je 'data/db' (zonder de leidende /) waarschijnlijk net in een andere directory hebt aangemaakt, zoals de '/root' homedirectory.

U moet deze map als root maken

Of je moet sudo . gebruiken , bijv. sudo mkdir -p /data/db

Of je moet su - . doen om superuser te worden, en maak dan de directory aan met mkdir -p /data/db

Opmerking:

MongoDB heeft ook een optie waarbij je de datadirectory op een andere locatie kunt maken, maar dat is over het algemeen geen goed idee, omdat het dingen als DB-herstel alleen iets ingewikkelder maakt, omdat je het db-pad altijd handmatig moet specificeren. Ik zou dat niet aanraden.

Bewerken:

de foutmelding die u krijgt is "Kan lock-bestand niet maken/openen:/data/db/mongod.lock errno:13 Toestemming geweigerd" . De map die je hebt gemaakt lijkt niet de juiste rechten en eigendom te hebben -- deze moet beschrijfbaar zijn door de gebruiker die het MongoDB-proces uitvoert.

Ga als volgt te werk om de rechten en eigendom van de map '/data/db/' te zien:(zo zouden de rechten en eigendom eruit moeten zien)

$ ls -ld /data/db/
drwxr-xr-x 4 mongod mongod 4096 Oct 26 10:31 /data/db/

De linkerkant 'drwxr-xr-x' toont de permissies voor de gebruiker, groep en anderen. 'mongod mongod' laat zien wie de eigenaar is van de directory en tot welke groep die directory behoort. Beide worden in dit geval 'mongod' genoemd.

Als uw directory '/data/db' niet de bovenstaande rechten en eigendom heeft, doet u dit :

Controleer eerst welke gebruiker en groep uw mongo-gebruiker heeft:

# grep mongo /etc/passwd
mongod:x:498:496:mongod:/var/lib/mongo:/bin/false

Je zou een vermelding voor mongod moeten hebben in /etc/passwd , aangezien het een daemon is.

sudo chmod 0755 /data/db
sudo chown -R 498:496 /data/db    # using the user-id , group-id

Je kunt ook de gebruikersnaam en groepsnaam als volgt gebruiken:(ze zijn te vinden in /etc/passwd en /etc/group )

sudo chown -R mongod:mongod /data/db 

dat zou het moeten laten werken..

In de reacties hieronder hebben sommige mensen dit gebruikt:

sudo chown -R `id -u` /data/db
sudo chmod -R go+w /data/db

of

sudo chown -R $USER /data/db 
sudo chmod -R go+w /data/db

Het nadeel is dat $USER een account is met een login-shell.Daemons zouden om veiligheidsredenen idealiter geen shell moeten hebben, daarom zie je /bin/false in de grep van het wachtwoordbestand hierboven.

Kijk hier om de betekenis van de directory-machtigingen beter te begrijpen:

http://www.perlfect.com/articles/chmod.shtml

Bekijk misschien ook een van de tutorials die je via Google kunt vinden:"UNIX voor beginners"



  1. Tot welk niveau vergrendelt MongoDB schrijven? (of:wat wordt bedoeld met per aansluiting)

  2. Transactie-ondersteuning in MongoDB

  3. Wat is een goede strategie om soortgelijke woorden te groeperen?

  4. render_template met meerdere variabelen