sql >> Database teknologi >  >> NoSQL >> MongoDB

Mongod klager over, at der ikke er nogen /data/db-mappe

Du har oprettet mappen det forkerte sted

/data/db betyder, at det er direkte under '/'-rodmappen, hvorimod du oprettede 'data/db' (uden den indledende /) sandsynligvis lige inde i en anden mappe, såsom '/root'-hjemmemappen.

Du skal oprette denne mappe som rod

Enten skal du bruge sudo , for eksempel. sudo mkdir -p /data/db

Eller du skal gøre su - for at blive superbruger, og opret derefter mappen med mkdir -p /data/db

Bemærk:

MongoDB har også en mulighed, hvor du kan oprette databiblioteket et andet sted, men det er generelt ikke en god idé, fordi det bare komplicerer ting som DB-gendannelse en smule, fordi du altid skal angive db-stien manuelt. Det vil jeg ikke anbefale at gøre.

Rediger:

fejlmeddelelsen du får er "Kan ikke oprette/åbne låsefil:/data/db/mongod.lock errno:13 Tilladelse nægtet" . Den mappe, du oprettede, ser ikke ud til at have de korrekte tilladelser og ejerskab -- den skal kunne skrives af den bruger, der kører MongoDB-processen.

For at se tilladelserne og ejerskabet af '/data/db/'-biblioteket, gør dette:(sådan skal tilladelserne og ejerskabet se ud)

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

Den venstre side 'drwxr-xr-x' viser tilladelserne for brugeren, gruppen og andre. 'mongod mongod' viser, hvem der ejer mappen, og hvilken gruppe den mappe tilhører. Begge kaldes 'mongod' i dette tilfælde.

Hvis din '/data/db'-mappe ikke har ovenstående tilladelser og ejerskab, skal du gøre dette :

Tjek først hvilken bruger og gruppe din mongo-bruger har:

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

Du bør have en post for mongod i /etc/passwd , da det er en dæmon.

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

Du kan også bruge brugernavnet og gruppenavnet som følger:(de kan findes i /etc/passwd og /etc/group )

sudo chown -R mongod:mongod /data/db 

det burde få det til at fungere..

I kommentarerne nedenfor brugte nogle personer dette:

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

Ulempen er, at $USER er en konto, som har en login-shell. Daemons bør ideelt set ikke have en shell af sikkerhedsmæssige årsager, det er derfor, du ser /bin/false i grepet i adgangskodefilen ovenfor.

Tjek her for bedre at forstå betydningen af ​​mappetilladelserne:

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

Tjek måske også en af ​​de tutorials, du kan finde via Google:"UNIX for begyndere"



  1. MongoDB $concat

  2. Hvad er MapReduce Key Value Pair i Hadoop?

  3. Docker compose spring boot redis forbindelsesproblem

  4. Mongodb lås samling indtil flag er sat?