我们正在使用基于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,我看不到这样做的方法吗?
答案 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'}})