can't start mongodb as sudo

2020-06-01 05:41发布

mongodb is returning errors related to access files when trying to start:

root@mongo01:~# sudo service mongodb start
mongodb start/running, process 4118
root@mongo01:~# Mon Jul 25 17:03:54 [initandlisten] MongoDB starting : pid=4118 port=27017 dbpath=/var/lib/mongodb 64-bit 
Mon Jul 25 17:03:54 [initandlisten] db version v1.8.2, pdfile version 4.5
Mon Jul 25 17:03:54 [initandlisten] git version: 433bbaa14aaba6860da15bd4de8edf600f56501b
Mon Jul 25 17:03:54 [initandlisten] build sys info: Linux bs-linux64.10gen.cc 2.6.21.7-2.ec2.v1.2.fc8xen #1 SMP Fri Nov 20 17:48:28 EST 2009 x86_64 BOOST_LIB_VERSION=1_41
Mon Jul 25 17:03:54 [initandlisten] couldn't open /var/lib/mongodb/adrise.ns errno:13 Permission denied
Mon Jul 25 17:03:54 [initandlisten] error couldn't open file /var/lib/mongodb/adrise.ns terminating
Mon Jul 25 17:03:54 dbexit: 
Mon Jul 25 17:03:54 [initandlisten] shutdown: going to close listening sockets...
Mon Jul 25 17:03:54 [initandlisten] shutdown: going to flush diaglog...
Mon Jul 25 17:03:54 [initandlisten] shutdown: going to close sockets...
Mon Jul 25 17:03:54 [initandlisten] shutdown: waiting for fs preallocator...
Mon Jul 25 17:03:54 [initandlisten] shutdown: closing all files...
Mon Jul 25 17:03:54 closeAllFiles() finished
Mon Jul 25 17:03:54 [initandlisten] shutdown: removing fs lock...
Mon Jul 25 17:03:54 dbexit: really exiting now

or

Mon Jul 25 17:03:22 [initandlisten] MongoDB starting : pid=4095 port=27017 dbpath=/var/lib/mongodb 64-bit 
Mon Jul 25 17:03:22 [initandlisten] db version v1.8.2, pdfile version 4.5
Mon Jul 25 17:03:22 [initandlisten] git version: 433bbaa14aaba6860da15bd4de8edf600f56501b
Mon Jul 25 17:03:22 [initandlisten] build sys info: Linux bs-linux64.10gen.cc 2.6.21.7-2.ec2.v1.2.fc8xen #1 SMP Fri Nov 20 17:48:28 EST 2009 x86_64 BOOST_LIB_VERSION=1_41
Mon Jul 25 17:03:22 [initandlisten] journal dir=/var/lib/mongodb/journal
Mon Jul 25 17:03:22 [initandlisten] recover : no journal files present, no recovery needed
Mon Jul 25 17:03:22 [initandlisten] info preallocateIsFaster couldn't run; returning false
Mon Jul 25 17:03:22 [initandlisten] exception in initAndListen std::exception: couldn't open file /var/lib/mongodb/journal/j._0 for writing errno:13 Permission denied, terminating
Mon Jul 25 17:03:22 dbexit: 
Mon Jul 25 17:03:22 [initandlisten] shutdown: going to close listening sockets...
Mon Jul 25 17:03:22 [initandlisten] shutdown: going to flush diaglog...
Mon Jul 25 17:03:22 [initandlisten] shutdown: going to close sockets...
Mon Jul 25 17:03:22 [initandlisten] shutdown: waiting for fs preallocator...
Mon Jul 25 17:03:22 [initandlisten] shutdown: lock for final commit...
Mon Jul 25 17:03:22 [initandlisten] shutdown: final commit...
Mon Jul 25 17:03:22 [initandlisten] shutdown: closing all files...
Mon Jul 25 17:03:22 closeAllFiles() finished
Mon Jul 25 17:03:22 [initandlisten] shutdown: journalCleanup...
Mon Jul 25 17:03:22 [initandlisten] removeJournalFiles
Mon Jul 25 17:03:22 [initandlisten] shutdown: removing fs lock...
Mon Jul 25 17:03:22 dbexit: really exiting now

when I try :

root@mongo01:~# mongodb -f /etc/mongodb.conf

it starts properly, any idea what it causing the issues?

Thanks

标签: mongodb
5条回答
闹够了就滚
2楼-- · 2020-06-01 05:53

This file is your first data file /var/lib/mongodb/adrise.ns. Actually to be specific it's a namespace file that identifies other DB files.

For MongoDB to work, the mongod process will need access to two folders:

  1. Data folder: in your case /var/lib/mongodb/
  2. Log folder: not sure where you've put this

Now, if you run this as the root user, it should have access to every every folder. But you should ensure that no one else is locking this folder.

However, you should be able to run this with lower permissions. Typically you only need user-level permissions, just ensure that the user has access to those folder. If possible you'll want to run this at a level lower than root. Many people actually make a mongodb user and run it in its own context.

查看更多
做个烂人
3楼-- · 2020-06-01 05:54

So I had this problem rather suddenly, and I'm not sure why. The problem is that the upstart file wants to run mongo as the user mongodb. From /etc/init/mongodb.conf:

if [ "x$ENABLE_MONGODB" = "xyes" ]; then exec start-stop-daemon --start --quiet --chuid mongodb --exec  /usr/bin/mongod -- --config /etc/mongodb.conf; fi

The chuid part tells it to run as a different user, even though you're running this script as root. For some reason, when I did ls -l in /var/lib/mongodb, I noticed that all the files were owned by root, which is why our mongodb user couldn't ge to them. I just did this:

sudo chown mongodb:mongodb /var/lib/mongodb

And all was well. How did the issue happen in the first place? Not sure.

查看更多
The star\"
4楼-- · 2020-06-01 05:58

Mon Jul 25 17:03:54 [initandlisten] couldn't open /var/lib/mongodb/adrise.ns errno:13 Permission denied

It is a permissions issue, run the following command:

sudo chown -R mongodb:mongodb /var/lib/mongodb
查看更多
看我几分像从前
5楼-- · 2020-06-01 06:03

Just try this command.

sudo chown -R mongodb:mongodb /var/lib/mongodb

And

sudo service mongod restart

may help you.

查看更多
一夜七次
6楼-- · 2020-06-01 06:14

I had this problem when I remove mongo 3.6 and install mongo 2.4! My solution:

  1. Create new dir for you'r DB (some /var/lib/mongodb)
  2. Edit config /etc/mongod.conf (dbpath=/var/lib/mongodb)
  3. Start mongod
查看更多
登录 后发表回答