sql >> Databasteknik >  >> NoSQL >> MongoDB

Mongod klagar på att det inte finns någon /data/db-mapp

Du skapade katalogen på fel ställe

/data/db betyder att den är direkt under '/' rotkatalogen, medan du skapade 'data/db' (utan den inledande /) förmodligen precis i en annan katalog, som '/root'-hemkatalogen.

Du måste skapa den här katalogen som root

Antingen måste du använda sudo , t.ex. sudo mkdir -p /data/db

Eller så måste du göra su - för att bli superanvändare och skapa sedan katalogen med mkdir -p /data/db

Obs:

MongoDB har också ett alternativ där du kan skapa datakatalogen på en annan plats, men det är generellt sett ingen bra idé, eftersom det bara komplicerar saker som DB-återställning något, eftersom du alltid måste ange db-sökvägen manuellt. Jag skulle inte rekommendera att du gör det.

Redigera:

felmeddelandet du får är "Det går inte att skapa/öppna låsfil:/data/db/mongod.lock errno:13 Tillstånd nekad" . Katalogen du skapade verkar inte ha rätt behörigheter och äganderätt -- den måste vara skrivbar av användaren som kör MongoDB-processen.

För att se behörigheterna och ägandet av katalogen '/data/db/', gör så här:(så här ska behörigheterna och ägandet se ut)

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

Den vänstra sidan 'drwxr-xr-x' visar behörigheterna för användaren, gruppen och andra. 'mongod mongod' visar vem som äger katalogen och vilken grupp den katalogen tillhör. Båda kallas 'mongod' i det här fallet.

Om din '/data/db'-katalog inte har behörigheterna och äganderätten ovan gör du detta :

Kontrollera först vilken användare och grupp din mongoanvändare har:

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

Du bör ha en post för mongod i /etc/passwd , eftersom det är en demon.

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

Du kan också använda användarnamn och gruppnamn, enligt följande:(de finns i /etc/passwd och /etc/group )

sudo chown -R mongod:mongod /data/db 

det borde få det att fungera...

I kommentarerna nedan använde vissa personer detta:

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

eller

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

Nackdelen är att $USER är ett konto som har ett inloggningsskal. Daemons bör helst inte ha ett skal av säkerhetsskäl, det är därför du ser /bin/false i grepet i lösenordsfilen ovan.

Kolla här för att bättre förstå innebörden av katalogbehörigheterna:

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

Kanske också kolla in någon av handledningarna du kan hitta via Google:"UNIX för nybörjare"



  1. Uppdatering av inbäddad dokumentegenskap i Mongodb

  2. Mongoexport med $gt- och $lt-begränsningar på ett datumintervall

  3. Definiera ett Mongoose-schema i farten från en JSON-formaterad "beskrivning"

  4. 5 sätt att få millisekunderna från ett datum i MongoDB