如何指定用户如'mongo'运行mongodb?

环境:Ubuntu 16.04
比如 php-fpmnginx 使用的是 www 用户运行的,redis 使用的 redis 用户运行,到了mongodb这好像不能指定用户,默认用 root 用户运行了,每次进mongo的时候都会警告

[initandlisten] ** WARNING: You are running this process as the root user, which is not recommended.

附上mongodb启动脚本,能修改这个脚本达到指定用户运行mongodb的目的吗?

#!/bin/sh

### BEGIN INIT INFO
# Provides:     mongodb
# Required-Start:
# Required-Stop:
# Default-Start:        2 3 4 5
# Default-Stop:         0 1 6
# Short-Description: mongodb
# Description: mongo db server
### END INIT INFO

. /lib/lsb/init-functions

PROGRAM=/usr/local/mongodb/bin/mongod
MONGOPID=`ps -ef | grep 'mongod' | grep -v grep | awk '{print $2}'`

test -x $PROGRAM || exit 0
case "$1" in
  start)
    ulimit -n 3000
    log_begin_msg "Starting MongoDB server"
    $PROGRAM -f /usr/local/mongodb/mongo.conf
    log_end_msg 0
    ;;
  stop)
    log_begin_msg "Stopping MongoDB server"
    if [ ! -z "$MONGOPID" ]; then
      kill -15 $MONGOPID
    fi
    log_end_msg 0                                                                                                                                                                                             
    ;;
  status)
    ;;
  *)
    log_success_msg "Usage: /etc/init.d/mongodb {start|stop|status}"
    exit 1
esac
exit 0
阅读 6.9k
5 个回答

这其实不是mongodb的问题了吧,应该算是Linux更合适些。至少可以使用sudo来指定用户:
sudo -u mongo $PROGRAM -f /usr/local/mongodb/mongo.conf
如果是用RPM安装,本身就带了init.d脚本,可以参考一下其中的做法,特别是里面已经配置了禁用NUMA,也是需要注意的。

我不知道理解你的意思对不对,你想要对用户授权登录,这时候你只需要添加用户并且mongod启动时添加了--auth参数开启登录授权。这时候以默认方式登录,即以无认证用户登录,查询等操作的时候会被提示无权限。

    Thu May 25 06:01:27.522 listDatabases failed:{ "ok" : 0, "errmsg" : "unauthorized" } at src/mongo/shell/mongo.js:46

感谢回答者提供的思路。
其实如果用apt形式安装mongodb的话,sudo service mongodb start是默认用mongodb用户运行的,编译安装的则需要自己找个启动脚本。
关键命令:

start-stop-daemon --start --quiet --pidfile /var/run/mongodb.pid --chuid mongodb:mongodb --exec /usr/local/mongodb/bin/mongod -- -f /usr/local/mongodb/mongo.conf

并不一定能启动得了,主要是 --chuid mongodb:mongodb 这个参数。
也可以下载启动脚本https://github.com/mongodb/mongo/blob/master/debian/init.d,修改后使用。

新手上路,请多包涵

sudo -u mongodb -g mongodb ./bin/mongod -f /etc/mongod.conf

-u 即指定用户
-g 即指定用户组

运行前记得将 mongodb 程序文件夹修改权限,如
sudo chown -R mongodb:mongodb /opt/mongodb/

考虑安全性,都是按权分配,需要多大的权限就分配多少权限,这个是linux安全基本原则。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题