Mongod klaagt dat er geen map /data/db is

Ik gebruik mijn nieuwe mac vandaag voor het eerst. Ik volg de aan de slag-gids op mongodb.org tot de stap waar men de /data/db-directory aanmaakt. btw, ik heb de homebrew-route gebruikt.

Dus ik open een terminal en ik denk dat ik in wat je de Home Directory noemde, want als ik “ls” doe, zie ik mappen van Desktop Application Films Muziek Afbeeldingen Documenten en Bibliotheek.

Dus ik deed een

mkdir -p /data/db

eerst staat er toestemming geweigerd. Ik bleef verschillende dingen proberen voor een half uur en uiteindelijk :

mkdir -p data/db

werkte. en wanneer ik “ls”, een map met gegevens en daarin genest, bestaat er een db-map.

dan start ik mongod en het klaagt over het niet vinden van data/db

Heb ik iets verkeerd gedaan?

Nu heb ik de

. gedaan

sudo mkdir -p /data/db

en als ik een “ls” doe, zie ik de data dir en de db dir. in de db-dir staat echter absoluut niets en wanneer ik nu mongod

Sun Oct 30 19:35:19 [initandlisten] exception in initAndListen: 10309 Unable to create/open lock file: /data/db/mongod.lock errno:13 Permission denied Is a mongod instance already running?, terminating
Sun Oct 30 19:35:19 dbexit: 
Sun Oct 30 19:35:19 [initandlisten] shutdown: going to close listening sockets...
Sun Oct 30 19:35:19 [initandlisten] shutdown: going to flush diaglog...
Sun Oct 30 19:35:19 [initandlisten] shutdown: going to close sockets...
Sun Oct 30 19:35:19 [initandlisten] shutdown: waiting for fs preallocator...
Sun Oct 30 19:35:19 [initandlisten] shutdown: lock for final commit...
Sun Oct 30 19:35:19 [initandlisten] shutdown: final commit...
Sun Oct 30 19:35:19 [initandlisten] shutdown: closing all files...
Sun Oct 30 19:35:19 [initandlisten] closeAllFiles() finished
Sun Oct 30 19:35:19 [initandlisten] shutdown: removing fs lock...
Sun Oct 30 19:35:19 [initandlisten] couldn't remove fs lock errno:9 Bad file descriptor
Sun Oct 30 19:35:19 dbexit: really exiting now

BEWERKEN
Krijg foutmelding voor

sudo chown mongod:mongod /data/db
chown: mongod: Invalid argument

Bedankt, iedereen!


Antwoord 1, autoriteit 100%

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.

p>

U moet deze map als root maken

Ofwel moet u sudogebruiken, b.v. sudo mkdir -p /data/db

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


Opmerking:

MongoDB heeft ook een optie waarmee 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 vergrendelingsbestand 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 —
het moet beschrijfbaar zijn door de gebruiker die het MongoDB-proces uitvoert.

Als u de machtigingen en eigendom van de map ‘/data/db/’ wilt zien, doet u dit:
(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 rechten 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

U kunt de gebruikersnaam en groepsnaam ook 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”


Antwoord 2, autoriteit 18%

Na dezelfde foutmelding als Nik

chown: id -u: ongeldig argument

Ik kwam erachter dat dit blijkbaar gebeurde door het gebruik van het verkeerde type aanhalingstekens (hadden aanhalingstekens moeten zijn) Ubuntu-forums

In plaats daarvan gebruikte ik gewoon

sudo chown $USER /data/db

als alternatief en nu heeft mongod de benodigde rechten.


Antwoord 3, autoriteit 14%

Dit werkt voor mij, gevonden in opmerkingen:

sudo chown -R $USER /data/db

Antwoord 4, autoriteit 11%

Maak de map.

sudo mkdir -p /data/db/

Geef jezelf toestemming voor de map.

sudo chown `id -u` /data/db

Dan kun je mongoduitvoeren zonder sudo. Werkt op OSX Yosemite


Antwoord 5, autoriteit 6%

Om die fout op OS X op te lossen, heb ik de service opnieuw opgestart en gestopt:

$ brew services restart mongodb
$ brew services stop mongodb

Toen heb ik mongod --config /usr/local/etc/mongod.confuitgevoerd en het probleem was verdwenen.

De fout leek op te treden na het upgraden van het mongodb homebrew-pakket.


Antwoord 6, autoriteit 4%

Als u mongo zonder argumenten uitvoert, wordt aangenomen dat u op de productiemachine draait, dus gebruikt u de standaardlocaties.

voor het gebruik van uw eigen database (dev of gewoon een andere) :

./bin/mongod --dbpath ~/data/db

Antwoord 7, autoriteit 3%

Installeren via brew op Mac waarbij YOUR_USER_NAME en stafde groep zijn

sudo mkdir -p /data/db
sudo chmod +x+r+w /data/db/
sudo touch /data/db/mongod.lock
sudo chown YOUR_USER_NAME:staff /data/db
sudo chmod +x+r+w /data/db/mongod.lock
sudo chown YOUR_USER_NAME:staff /data/db/mongod.lock

Antwoord 8

Ik had dit probleem met een bestaande Mongodb-configuratie. Ik weet nog steeds niet zeker waarom het gebeurde, maar om de een of andere reden kon het Mongod-proces het bestand mongod.config niet vinden.
Omdat het het configuratiebestand niet kon vinden, probeerde het de DB-bestanden te vinden in /data/db, een map die niet bestond.
Het configuratiebestand was echter nog steeds beschikbaar, dus ik zorgde ervoor dat het proces machtigingen heeft voor het configuratiebestand en voer het mongod-proces uit met de –config-vlag als volgt:

mongod --config /etc/mongod.conf

In het configuratiebestand zelf had ik deze instelling:

storage:
  dbPath: /var/lib/mongodb

En zo kon het proces de echte DB-map weer vinden.


Antwoord 9

Dat heb ik gedaan

brew install mongodb

op 01-02-2018 en dat gaf me mongodbversie 3.6.2.

Op verzoek van het antwoord van orlukehierboven, heb ik het gewoon geprobeerd

$ brew services restart mongodb

en alles kwam tot leven. Mijn mongoose.createConnection()aanroep deed wat ik wilde. Het GUI MongoDB Compass, de communityversie, zou verbinding maken. Ik heb Compass gebruikt om naar de verzameling local.startup_logte kijken. Er stond één document in, het logboek van mij die net de mongoDB-service startte, en dat had

cmdLine:Object
    config:"/usr/local/etc/mongod.conf"

en inderdaad was er zo’n bestand:

$ more /usr/local/etc/mongod.conf
systemLog:
  destination: file
  path: /usr/local/var/log/mongodb/mongo.log
  logAppend: true
storage:
  dbPath: /usr/local/var/mongodb
net:
  bindIp: 127.0.0.1

en er was een /usr/local/var/mongodbdirectory met veel obscure bestanden. Dus zo lijkt de installatie nu te werken.

Ik weet niet zeker of brew services restartde service die moet worden uitgevoerd bij inloggen. Dus dat deed ik

brew services stop mongodb
brew services start mongodb

en hoopte dat het na het opnieuw opstarten opnieuw begon. En inderdaad, dat deed het. Sterker nog, nu denk ik dat het juiste is om te doen na de eerste installatie

brew services start mongodb

en dat zou de service moeten starten en herstarten na opnieuw opstarten.


Antwoord 10

Ik wilde er hier alleen op wijzen dat als je dit probeert en je tegenkomt mkdir: /data/db: Read-only file system, deze opmerking moet worden gelezen, die me heeft geholpen: https://stackoverflow.com/a/58895373.

Op die manier zullen ze dit zien als iemand op dit antwoord staat en Controle F voor “alleen lezen” doet


Antwoord 11

Als je Mac gebruikt en Catalina en Installed Mongodb via Homebrew gebruikt, hoef je alleen maar deze opdracht te typen en je bent klaar om te beginnen.

brew services start mongodb-community

Antwoord 12

Uw opdracht heeft de mapstructuur in de huidige map gemaakt, niet de hoofdmap van uw computer (wat de ontbrekende /is).

Het eerste commando was goed, maar omdat je een map probeert te maken in /, wat een beschermde map is, moet je het voorvoegsel geven met sudo, wat is een afkorting voor “superuser do”. U wordt dan om uw wachtwoord gevraagd.

Dus het volledige commando zou zijn:

$ sudo mkdir -p /data/db

Antwoord 13

Je probeert een map te maken waar je geen root-toegang tot hebt.

Voor het testen van mongodb gebruik ik gewoon een map uit mijn gebruikersmap, zoals:

cd
mkdir -p temp/
mongod --dbpath .

Dit maakt een mongo-database in temp/ van je huidige werkdirectory


Antwoord 14

Ik heb exact hetzelfde probleem opgelost door de /data/db-mappen te maken met mijn windowmanager. Ik probeerde het eerst via de terminal en om een map in de hoofdmap te maken, moest ik sudo gebruiken.

Ik ging gewoon naar de hoofdmap met Finder en maakte een nieuwe map met ‘Nieuwe map’. Werkte helemaal voor mij.

Opmerking: ik gebruik OSX.


Antwoord 15

U moet /data/dbmaken … dat is een map met de naam /data/in uw root (dwz /) en de submap daar genaamd /db/

Je krijgt toestemmingsfouten omdat je sudomoet gebruiken om een map te maken in je hoofdmap in MacOS, met sudo kun je opdrachten uitvoeren als beheerder.

Dus, voer dit in plaats daarvan uit …

$ sudo mkdir -p /data/db

Dit zal u om een wachtwoord vragen, het is hetzelfde wachtwoord dat u gebruikt om systeeminstellingen te wijzigen (dat kleine dialoogvenster dat wordt geopend wanneer u dingen probeert te wijzigen in Systeemvoorkeuren voor ecample), en waarschijnlijk hetzelfde wachtwoord dat u gebruikt om in te loggen.


Antwoord 16

Even een opmerking:

Als u MONGOD hebt geprobeerd zonder de machtigingen te veranderen, hebt u waarschijnlijk een MongoD.lock-bestand (en enkele andere bestanden) in de map / DATA / DB. Zelfs nadat u de machtigingen voor de map / Directory / DB hebt gewijzigd om toegang te geven tot uw $ -gebruiker, blijft u het “Kan niet in staat om / het vergrendelingsbestand: /data/db/mongod.lock errno: 13 toestemming geweigerd te krijgen ” fout. Voer LS -Al / DATA / DB uit en u zult waarschijnlijk zien dat de machtigingen voor de afzonderlijke bestanden nog steeds zijn ingesteld op root voor gebruiker, niet op uw $ -gebruiker. Je moet het MongoD.lock-bestand en de anderen ook verwijderen. Wanneer u MONGOD opnieuw runt, moet alles werken, en u kunt controleren of de bestandsmachtigingen overeenkomen met de mapmachtigingen door het opnieuw uit te voeren.


Antwoord 17

Maak map in de root

sudo mkdir -p /data/db

Wijzig nu de eigenaar

sudo chown -R $USER /data

Je bent goed om te gaan!

mongod

In plaats van het gebruik van sudo mongod, hoeft u geen alles wat wachtwoord nodig hebt, maar voor het echte project moet u sudo mongodgebruiken, geef geen toestemming aan Normale gebruiker!


Antwoord 18

Ik hield de volgende fout bij toen ik probeerde MongoDB te starten.

"shutting down with code:100" 

Ik gebruikte de volgende opdracht:

./mongod --dbpath=~/mongo-data

De oplossing voor mij was dat ik het “=” teken niet nodig had en dit veroorzaakte de fout. Dus dat deed ik

./mongod --dbpath ~/mongo-data

Ik wilde dit gewoon naar buiten brengen omdat de fout op geen enkele manier aangeeft dat dit het probleem is. Ik heb bijna de inhoud van de map ~/mongo-data verwijderd om te zien of dat hielp. Blij dat ik me herinnerde dat cli args soms het “=”-teken niet gebruiken.


Antwoord 19

Tot die datum dacht ik ook dat we die /data/db-map moesten maken om het mongod-commando te starten.

Maar onlangs probeerde ik mongod te starten met het service-commando en het werkte voor mij en het was niet nodig om de /data/db-directory aan te maken.

service mongod start

Om de status van mongod te controleren, kun je het volgende commando uitvoeren.

service mongod status

Antwoord 20

Deze oplossing lost mijn probleem op

  1. Maak een map als

    sudo mkdir -p /data/db

  2. Dat maakt een map met de naam db en probeer dan te beginnen met commando’s

    sudo mongod

Als je een andere fout of probleem krijgt met het starten van mongod, kun je het probleem vinden als

Kan listener niet instellen: SocketException: adres al in gebruik
Als je die andere fout vindt, moet je het lopende proces van mongod beëindigen door naar terminal te typen als

ps ax | grep mongod
sudo kill ps_number

en zoek de mongod-running-poort en stop het proces.
Een andere manier is om een specifieke poort te maken bij het starten van mongod als

sudo mongod --port 27018

Antwoord 21

Vanaf MongoDB 4.4 worden de MongoDB Database Tools nu apart van de MongoDB Server uitgebracht.

Je moet downloaden: https://www.mongodb. com/try/download/database-tools?tck=docs_databasetools

vervolgens kopieer je alle bestanden naar /usr/bin
en alle opdrachtregels zijn beschikbaar.


Antwoord 22

Typ “id” op de terminal om de beschikbare gebruikers-ID’s te zien die u kunt geven,
Typ dan gewoon

“sudo chown -R idname/data/db”

Dit werkte voor mij!
Ik hoop dat dit je probleem oplost.


Antwoord 23

In recentere versies van MongoDB heb ik 3.2.10, het is standaard opgeslagen in

/var/lib/mongodb


Antwoord 24

Tilo heeft het antwoord dat voor mij werkte tot DIT:

sudo chown -R 126:135 /data/db 

Ik moest gebruiken:

sudo chown -R $USER /data/db

Antwoord 25

MongoDB kan verwarrend zijn met betrekking tot de map dbpath.

Als u mongoduitvoert zonder dbpath, dan is het standaardpad /data/db

Als u het echter als een service start, b.v. systemctl start mongoddan leest het in het configuratiebestand, meestal /etc/mongod.cfgen in dit configuratiebestand zijn de standaardinstellingen

Platform Pakketbeheerder Standaard storage.dbPath
RHEL / CentOS en Amazon jammie /var/lib/mongo
SUSE zypper /var/lib/mongo
Ubuntu en Debian apt /var/lib/mongodb
macOS brouwen /usr/local/var/mongodb

Antwoord 26

Mongodb zoekt bij het uitvoeren van mongodnaar de map ~/data/dbals een pad voor db in de hoofdmap van uw apparaat.

Ik heb het opgelost door een map ~/datate maken door mkdir ~/data

uit te voeren

Controleer in de hoofdmap of de gegevensmap aanwezig is door lste typen. Navigeer vervolgens naar de gegevensmap en controleer nogmaals of pwdu /Users/username/data

moet geven

Voer vervolgens deze opdracht uit om een mongodb db-pad te maken
sudo mongod --dbpath=/Users/username/data

Dit deed het voor mij en toen ik mongod

uitvoerde


Antwoord 27

Na het (opnieuw) installeren van het hulpprogrammapakket kreeg ik een soortgelijke fout op een Windows 10-apparaat;

uitzondering in initAndListen: NonExistentPath: Gegevensmap C:\data\db\ niet gevonden., beëindigen

Oplossing
Analoog aan zoals uitgelegd voor de linux-systemen: het maken van de map is voldoende om de mongod.exe(mongoDB-server) te kunnen starten.

Ik dacht dat ik het zou kunnen laten voor mensen die hier eindigen met dezelfde zoektermen op een Windows-apparaat.


Antwoord 28

Er is een heel domme manier om dit probleem te creëren, waar ik een pionier in ben:

1) laat je mongo-installatie een tijdje staan
2) kom terug en de server is niet actief
3) probeer het te starten, maar gebruik deze keer geen sudo
4) mongo kan data/db/ niet vinden omdat het nu in de home dir van de gebruiker zoekt in plaats van in su home dir

Ja, het is echt dom, maar als het een tijdje geleden is dat je op het systeem was, kan het je laten struikelen.

Kort antwoord: zorg ervoor dat u mongo uitvoert met dezelfde geïmpliceerde homedirectory

Other episodes