我们正在使用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,但
是的,在给定的数据库上,您可以使用db.system.users.find({user:'login'}).count()
如果用户不存在,它将返回 0。
感觉这种方法已被弃用,我需要以下命令才能工作:
db.getUsers({filter: {'user': 'login'}})
今天我只是尝试了mongo
命令的-u
和-p
选项,它对我有用:
mongo --port 27037 --quiet -u superuser -p pwd
--eval "db.system.users.find({user:'user3'}).count()" admin
请注意最后一个"admin"参数 - 它是您要进行身份验证的数据库的名称。
要检查用户username
是否存在,请执行以下操作:
db.runCommand({ usersInfo: { user: "username", db: "admin" } }).users.length == 1
如果用户存在,这将返回true
,否则false
返回。 (如果用户是在另一个数据库中创建的,请将admin
替换为数据库的名称。
使用findOne
db.system.users.findOne({user:'login'})
- 如果没有用户,它将
null
- 如果找到,它将返回用户