Mongodb身份验证无法从配置文件中运行

时间:2017-03-29 20:17:51

标签: mongodb ubuntu service

我正在尝试从配置文件中启用我的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:

2 个答案:

答案 0 :(得分:2)

mongodb配置文件是YAML文件。此外,您不能在mongodb的配置文件中使用选项卡。 始终使用空格。在配置文件中,您已注释掉 security 参数。取消注释它可能会起作用

将配置文件更改为

# 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:

答案 1 :(得分:0)

有一些问题:

首先,运行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 mongod开始无法工作。它需要通过sudo systemctl start mongodb完成。这在mongodb文档中也没有正确提及。