MongoDB命令行显示用户是否存在(对于puppet'incept'子句)

时间:2012-10-12 09:49:22

标签: mongodb puppet

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

以下是我们检查副本集是否已初始化的方法:

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

验证可能有类似的技巧吗?我在这里检查了文档http://www.mongodb.org/display/DOCS/dbshell+%28mongo%29+Reference,我看不到这样做的方法吗?

5 个答案:

答案 0 :(得分:14)

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

答案 1 :(得分:1)

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

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

注意最后一个" admin" arg - 它是您要进行身份验证的数据库的名称。

答案 2 :(得分:0)

要检查用户username是否存在:

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

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

答案 3 :(得分:0)

您也可以使用findOne

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

  • 如果没有用户,它将null
  • 找到后将返回用户

答案 4 :(得分:0)

感觉此方法已被弃用,我需要以下命令才能工作:

db.getUsers({filter: {'user': 'login'}})