2012-10-12 31 views
5

我們正在使用基於MongoDB的用戶認證,並且我想快速運行一個命令來檢查用戶是否已經在數據庫中創建,爲了傀儡不會反覆嘗試創建用戶。MongoDB命令行顯示用戶是否存在(對於puppet'unless'子句)

下面是我們如何檢查副本集已初始化:

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

是一個類似的伎倆可能的認證?我在這裏檢查了文檔http://www.mongodb.org/display/DOCS/dbshell+%28mongo%29+Reference,我看不到一種方法嗎?

回答

13

是的,在給定的DB上,可以使用db.system.users.find({user:'login'}).count(),如果用戶不存在,則返回0。

+1

你確定要使用'db.system'嗎?不應該'db.users.find(...)。count()'做同樣的事情嗎? – Philipp

+2

'db.users.find(...)。count()'將返回存儲在'users'集合中的文檔的數量。這個集合並不特別,並且與MongoDB身份驗證過程無關。 –

+0

啊,好的。我認爲OP是在討論一個名爲users的普通集合,而不是數據庫本身的用戶。 – Philipp

1

今天,我只是想爲mongo命令-u-p選項和它的工作對我來說:

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

注意最後的「管理員」 ARG - 這是數據庫的名稱,對其中進行身份驗證。

相關問題