如何查询在$ external database中创建的用户

wil*_*ilu 3 mongodb x509 mongodb-query

我正在尝试配置基于证书的mongo身份验证,通常它工作正常,但有一个问题我无法找到答案.假设我在$ external数据库中创建了一个用户:

use $external
db.createUser({user: "emailAddress=jsmith@example.com,CN=jsmith,OU=Mongo Admins,O=Initech,C=US",
               roles: [{"role" : "root","db" : "admin"}]
})
Run Code Online (Sandbox Code Playgroud)

问:如何查询$ external数据库的内容,特别是用户数据?

有没有类似的方式:

use admin
db.system.users.find()
Run Code Online (Sandbox Code Playgroud)

小智 7

"$ external"数据库不是真正的数据库,它不包含任何数据.所有数据库的所有用户和角色数据都存储在admin.system.users或中admin.system.roles.

首选解决方案是使用getUsers命令.

在shell中,您将发出以下语句:

use $external
db.getUsers()
Run Code Online (Sandbox Code Playgroud)

如果您具有正确的权限,还可以查询admin.system.users以查找任何数据库的用户,如下所示:

use admin
db.system.users.find({db: "$external"})
Run Code Online (Sandbox Code Playgroud)