问题:Mongodb 身份验证在配置文件中不起作用

我正在尝试从配置文件在我的 mongodb 版本 v3.4.3 中启用身份验证,但它不起作用。

以下作品:sudo mongod --auth --port 27017 --dbpath /var/lib/mongodb

我可以通过身份验证访问

以下也有效

sudo service mongod start但仅当在配置文件(即 /etc/mongod.conf)中我不放授权:启用

当我添加授权:启用(如该版本的文档中所述)时,我无法再启动 mongod。它给出了一个错误,说我的数据库文件夹不存在,所以我假设配置文件已损坏,并且它不再读取数据库文件夹在 /var/lib/mongodb 中。

任何建议表示赞赏。

这里是完整的配置文件(标准配置文件,除了我添加了授权)

ubuntu@ip-172-31-28-105:~$ cat /etc/mongod.conf

# mongod.conf

# for documentation of all options, see:
#   http://docs.mongodb.org/manual/reference/configuration-options/

# Where and how to store data.
storage:
  dbPath: /var/lib/mongodb
  journal:
    enabled: true
#  engine:
#  mmapv1:
#  wiredTiger:

# where to write logging data.
systemLog:
  destination: file
  logAppend: true
  path: /var/log/mongodb/mongod.log

# network interfaces
net:
  port: 27017
  bindIp: 0.0.0.0

#processManagement:

#security:
    authorization: enabled

#operationProfiling:

#replication:

#sharding:

## Enterprise-Only Options:

#auditLog:

#snmp:

解答

有几个问题:

首先,运行 mongod 时必须始终声明配置文件。否则它将 /data/db 作为数据库文件夹。所以运行它的方式是通过mongod --config /etc/mongod.conf,标准配置包含dbPath: /var/lib/mongodb作为数据库文件夹。

其次,配置文件需要如下所示。证券前面的# 需要去掉。

security:
  authorization: enabled

第三,为了让start service mongod start工作,有必要调整 mongodb 数据库文件夹中的权限,因此 mongodb 用户有权写入它们(这不是在文档中,但可能与任何有过的人不言自明足够的经验)。这需要使用 chown 来完成,因为脚本将使用 mongdb 作为用户(不再使用 sudo)。

第四,我使用的是 ubuntu 16,所以sudo service mongodstart 不起作用。需要通过sudo systemctl start mongodb来完成。 mongodb 文档中也没有正确提及这一点。

Logo

MongoDB社区为您提供最前沿的新闻资讯和知识内容

更多推荐