MongoDB 数据库的身份验证限制

MongoDB authentication restriction for database

我有一个名为 flowers 的数据库,其中有一个名为 flower 的集合。当我第一次在 MongoDB 中创建它时,我没有为其设置身份验证(我只是使用默认的 port:27017 和本地主机连接到它)。

然后我想限制对该数据库的访问,以便只能使用一组用户名和密码访问。首先,我在 admin 数据库中创建了一个 admin

> use admin
switched to db admin
> db.createUser(
...   {
...     user: "myUserAdmin",
...     pwd: "abc123",
...     roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
...   }
... )
Successfully added user: {
        "user" : "myUserAdmin",
        "roles" : [
                {
                        "role" : "userAdminAnyDatabase",
                        "db" : "admin"
                }
        ]
}
> show users
{
        "_id" : "admin.myUserAdmin",
        "user" : "myUserAdmin",
        "db" : "admin",
        "roles" : [
                {
                        "role" : "userAdminAnyDatabase",
                        "db" : "admin"
                }
        ],
        "mechanisms" : [
                "SCRAM-SHA-1",
                "SCRAM-SHA-256"
        ]
}

然后我退出了mongo,我重新启动了服务。然后我为我的数据库创建了一个用户:

> use flowers
switched to db flowers
> db.createUser(
...   {
...     user: "adminfl",
...     pwd: "flower1",
...     roles: [ "dbOwner", "readWrite"]
...   }
... )
Successfully added user: { "user" : "adminfl", "roles" : [ "dbOwner", "readWrite" ] }

在此之后我再次退出 mongo,重新启动服务....从 Compass 我尝试使用用户名和密码连接到数据库 flowers 并指定 authentication database: flowers .至此一切顺利。

我的问题是:当我使用身份验证连接到 mongo 时,我可以看到所有数据库,而当我不使用身份验证连接时,我得到相同的结果。

如何才能让我的数据库 flowers 只有在使用用户名和密码连接时才可见?

更新:这是我的mongod.cfg:

# mongod.conf

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

# Where and how to store data.
storage:
  dbPath: C:\Program Files\MongoDB\Server.0\data
  journal:
    enabled: true
#  engine:
#  mmapv1:
#  wiredTiger:

# where to write logging data.
systemLog:
  destination: file
  logAppend: true
  path:  C:\Program Files\MongoDB\Server.0\log\mongod.log

# network interfaces
net:
  port: 27017
  bindIp: 127.0.0.1


#processManagement:

#security:

#operationProfiling:


#replication:

#sharding:

## Enterprise-Only Options:

#auditLog:

#snmp:

如果您的 mongod.conf =>

中未添加,请尝试添加以下行
security:
  authorization: enabled

然后重新启动 mongodb 就可以了。

好的,查看您的 mongo conf,我们可以看到您的数据库和日志路径中有 space,即 "Program Files",这可能会产生问题。 解决方法是: 1) 将数据、日志和conf 目录制作成C:\data\db, C:\data\log and C:\data\mongod.conf. 2) 在 mongod.conf 中更改 dbpath 和 logpath 的路径。 3) 按照提示在mongod.conf中添加security authorization: enabled。 4) 如果已经安装并重新安装服务,请删除 mongod 服务。 5)重启服务。希望这有帮助。