编辑 mongo.conf 后 MongoDB 状态失败(代码退出,状态=2)

Sco*_*ott 2 mongodb

我正在尝试使用Robo 3T远程连接到我的 Google Cloud Server以连接MongoDB v4.0.11,这样我就可以从 Windows 中查看数据。

我正在运行 Ubuntu 18.04LTS Minimal。为了启用到 MongoDB 的远程连接,我首先在我的 admin 数据库中创建了一个管理用户和 root 用户。

我的问题是,一旦我添加authorization: "enabled"security:/etc/mongod.conf重启MongoDB中,我在运行时,遇到下列情况$:systemctl status mongod

? mongod.service - MongoDB Database Server
   Loaded: loaded (/lib/systemd/system/mongod.service; disabled; vendor preset: enabled)
   Active: failed (Result: exit-code) since Tue 2019-08-06 16:43:51 BST; 1min 20s ago
     Docs: https://docs.mongodb.org/manual
  Process: 6517 ExecStart=/usr/bin/mongod --config /etc/mongod.conf (code=exited, status=2)
 Main PID: 6517 (code=exited, status=2)

Aug 06 16:43:51 instance-1 systemd[1]: Started MongoDB Database Server.
Aug 06 16:43:51 instance-1 mongod[6517]: Unrecognized option: processManagement.authorization
Aug 06 16:43:51 instance-1 mongod[6517]: try '/usr/bin/mongod --help' for more information
Aug 06 16:43:51 instance-1 systemd[1]: mongod.service: Main process exited, code=exited, status=2/INVALIDARGUMENT
Aug 06 16:43:51 instance-1 systemd[1]: mongod.service: Failed with result 'exit-code'.
Run Code Online (Sandbox Code Playgroud)

示例 /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: 127.0.0.1

# how the process runs
processManagement:
  timeZoneInfo: /usr/share/zoneinfo

#security:
  authorization: "enabled"
#operationProfiling:

#replication:

#sharding:

## Enterprise-Only Options:

#auditLog:

#snmp:
Run Code Online (Sandbox Code Playgroud)

似乎有一个无效的论点,/etc/mongod.conf但从我在网上阅读的内容来看,我看不出问题所在。

小智 8

wrong:

#security:
  authorization: "enabled"
Run Code Online (Sandbox Code Playgroud)

correct:

security:
  authorization: enabled
Run Code Online (Sandbox Code Playgroud)


use*_*685 7

对于 4.x 版本,您似乎需要修改您列出的现有安全部分

#security:
  authorization: "enabled"
Run Code Online (Sandbox Code Playgroud)

并将其替换为security.authorization: enabled

security:
      authorization: "enabled"
Run Code Online (Sandbox Code Playgroud)

然后您应该能够重新加载并测试身份验证是否按预期工作。

如果您深入研究文档,您会在此处找到相关部分。

安全授权

Type: string

Default: disabled

Enable or disable Role-Based Access Control (RBAC) to govern each user’s access to database resources and operations.

Set this option to one of the following:
Value     Description
enabled   A user can access only the database resources and actions for which they have been granted privileges.
disabled  A user can access any database and perform any action.
Run Code Online (Sandbox Code Playgroud)