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)重启服务。希望这有帮助。
我有一个名为 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)重启服务。希望这有帮助。