2013-12-19 28 views
2

我在本地Windows机器上设置了mongodb。我按照mongo文档中的说明设置了auth。我关闭并使用auth标志重新启动服务器。我使用“使用管理员”切换到管理数据库,然后使用db.auth。它使我登录,但是当我尝试使用shutdown命令(db.shutdownServer)时,我被告知未经授权。我如何关闭服务器(除了关闭cmd提示符)关闭启用验证的mongodb

+2

你的管理员用户有什么角色?为了运行'shutdown'命令,需要['clusterAdmin' role](http://docs.mongodb.org/manual/reference/user-privileges/#administrative-roles)。 – Stennie

+0

关闭命令提示符将*不*关闭服务器。 –

回答

3

我不明白在你的问题中使用“db.auth”的东西,但总的来说,你将需要登录到Mongo作为角色“clusterAdmin”http://docs.mongodb.org/manual/reference/user-privileges/#clusterAdmin中的用户。这可以在我的系统上运行,但我有一个LaunchDaemon正在运行,立即重新启动它,但问题是用户“rkuhar”可以从mongo shell中发出db.shutdownServer()命令,因为他的system.user记录在管理员数据库包含“clusterAdmin”角色。

bobk-mbp:DM_Server bobk$ mongo -p -u rkuhar localhost:27018/admin 
MongoDB shell version: 2.4.6 
Enter password: 
connecting to: localhost:27018/admin 
dmReplSet:SECONDARY> db.shutdownServer(); 
Thu Dec 19 14:48:44.358 DBClientCursor::init call() failed 
server should be down... 
Thu Dec 19 14:48:44.363 trying reconnect to localhost:27018 
Thu Dec 19 14:48:44.365 reconnect localhost:27018 failed couldn't connect to server localhost:27018 
> 

这就是我的用户“rkuhar”在管理数据库中的样子。

bobk-mbp:DM_Server bobk$ mongo -p -u userAdmin localhost/admin 
MongoDB shell version: 2.4.6 
Enter password: 
connecting to: localhost/admin 
> db.system.users.find({ user : 'rkuhar' }).pretty(); 
{ 
    "_id" : ObjectId("526061a45cf44cef5b2ef011"), 
    "pwd" : "097df10ea69d71d986fe5e94dbad77b1", 
    "roles" : [ 
     "readWriteAnyDatabase", 
     "dbAdminAnyDatabase", 
     "clusterAdmin" 
    ], 
    "user" : "rkuhar" 
} 
> 
+0

我以为clusterAdmin只处理碎片。谢谢 – JoeyD473