【问题标题】:Mongodb authentication not working from config fileMongodb身份验证无法从配置文件中工作
【发布时间】:2017-04-01 02:34:41
【问题描述】:

我正在尝试通过配置文件在我的 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:

【问题讨论】:

  • 你能告诉我们cat /etc/mongod.conf吗?
  • 按要求添加到上面
  • hmmmm,你能告诉我们cat /var/log/mongodb/mongod.log吗?

标签: mongodb ubuntu service


【解决方案1】:

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:

【讨论】:

  • 不起作用。当我运行 mongod 时,它似乎忽略了 conf 文件并查看了错误的数据文件夹。 initAndListen 中的异常:29 未找到数据目录 /data/db。,终止
  • 你运行命令 sudo mongodsudo service mongod start ?
  • 我都试过了。两者都失败了。但是使用服务它在编辑 conf 文件后不再写任何日志,所以我只做 sudo mongod
  • 尝试执行 sudo mongod -dbpath /var/lib/mongodb.为了启动服务,我会更新答案
【解决方案2】:

有几个问题:

首先,运行 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 start 不起作用。需要通过sudo systemctl start mongodb 完成。这在 mongodb 文档中也没有正确提及。

【讨论】:

  • 我在windows server中遇到了同样的问题,去掉#就解决了
猜你喜欢
  • 1970-01-01
  • 2023-03-14
  • 1970-01-01
  • 2015-04-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-09
  • 1970-01-01
相关资源
最近更新 更多