在EC2上推出了Ubuntu 14.04 LTS微实例,在their official documentation之后安装了最新的MongoDB。当我运行sudo mongod --fork --dbpath /somedbpath --logpath /somelogpath
后跟mongo
时,
我收到警告,它不应该以root用户身份运行。我注意到安装过程创建了一个mongodb用户和组,我可以分别在compgen -u
和compgen -g
的输出中看到它们。我关闭了mongod服务器,甚至删除了dbpath目录中创建的所有文件。现在,我想将守护进程作为mongodb用户运行,因为我已经了解它具有最佳性能所需的所有适当权限和ulimits。
虽然如何从ubuntu切换到mongodb用户?我跑了sudo passwd mongodb
并更新了密码。然后我尝试su mongodb
,在提示时输入密码,但点击ENTER让我只以ubuntu登录。我尝试退出并重新登录。我在/ home下手动创建了mongodb目录,因为它不存在。我甚至在里面创建了一个.ssh目录,并从/home/ubuntu/.ssh复制了authorized_keys文件,看看我是否可以ssh -i pemfile mongodb@serveruri
登录服务器但是它会抛出Permission denied (publickey).
我倾向于遵循最佳实践,并希望能够将mongo守护进程作为mongodb启动。
答案 0 :(得分:0)
以mangodb用户身份运行命令:
sudo -u mangodb mongod --fork --dbpath /somedbpath --logpath /somelogpath
答案 1 :(得分:0)
要解决这个问题,我必须更改数据目录(及其文件)和日志路径的权限,如下所示 -
cd /var/log
sudo chown -R mongodb:mongodb mongodb/
cd /
sudo chown -R mongodb:mongodb data/
然后我运行了与7171u的答案类似的命令,即
sudo -u mongodb mongod --fork --dbpath /data/ --logpath /var/log/mongodb/mongod.log
警告已经消失了!
答案 2 :(得分:0)
你自己解决了这个问题很好,但是你仍然不清楚这一点。
通过以下提到的链接,了解每个用户的角色。
http://www.cyberciti.biz/faq/understanding-etcpasswd-file-format/
mongod用户是没有主目录的用户,这就是为什么不是/ home,而且它也没有shell。检查你的/ etc / passwd文件中的mongod用户。
mongod:x:993:990:mongod:/var/lib/mongo:/bin/false
这是上述文件中mongod用户的默认条目。
其主目录是/ var / lib / mongo 它的外壳是假的。