11

我们正在使用基于 MongoDB 用户的身份验证,我想快速运行一个命令来检查数据库中是否已经创建了一个用户,这样 puppet 就不会重复尝试创建用户。

以下是我们如何检查副本集是否已初始化:

/usr/bin/mongo --host ${members[0]} --quiet --eval 'rs.status().ok' | grep -q 1

身份验证是否可以使用类似的技巧?我已经检查了这里的文档http://www.mongodb.org/display/DOCS/dbshel ​​l+%28mongo%29+Reference ,我看不到这样做的方法吗?

4

5 回答 5

19

是的,在给定的数据库上,db.system.users.find({user:'login'}).count()如果用户不存在,您可以使用 which 将返回 0。

于 2012-10-12T10:04:16.837 回答
3

感觉这个方法已经被弃用了,我需要下面的命令才能工作:

db.getUsers({filter: {'user': 'login'}})
于 2019-09-06T09:58:11.630 回答
2

今天我刚刚尝试-u了命令-p选项mongo,它对我有用:

mongo --port 27037 --quiet -u superuser -p pwd 
    --eval "db.system.users.find({user:'user3'}).count()" admin

请注意最后一个“admin”参数 - 它是您正在对其进行身份验证的数据库的名称。

于 2014-10-22T07:44:39.277 回答
0

检查用户是否username存在:

db.runCommand({ usersInfo: { user: "username", db: "admin" } }).users.length == 1

如果用户存在则返回truefalse否则返回。(如果用户是在另一个数据库中创建的,则替换admin为数据库的名称。)

于 2018-07-31T18:30:36.787 回答
0

你也可以使用findOne

db.system.users.findOne({user:'login'})

  • null如果没有用户,它会
  • 如果找到它将返回用户
于 2019-04-21T06:08:40.800 回答