2013-07-06 37 views
0

我建設使用的副本集碎片一個MongoDB的集羣,有一個mongos實例運行指向第一副本集設置和三個配置的服務器上運行(所有在Linux服務器上)但是當通過mongo shell連接到應用程序服務器上的mongos實例(在Windows Server 2012 Standard x64上)並按照the docs發出sh.addShard()命令時,我得到以下響應:未授權的命令:addShard數據庫管理員

> sh.addShard("rs1/xxx:xxx") 
{ 
     "note" : "not authorized for command: addShard on database admin", 
     "ok" : 0, 
     "errmsg" : "unauthorized" 
} 

有誰知道我做錯了什麼?我使用密鑰文件來運行所有Mongo實例以提高安全性。密鑰文件是根據these docs與Windows兼容的文件。

回答

0

因爲我已經解決了這個。這是因爲憑藉密鑰文件啓用了身份驗證,並且使用localhost連接不足以進行身份​​驗證。在羣集中禁用密鑰文件使用後,創建一個管理員帳戶並使用它進行連接,它就起作用了。

1

我的結果:

如果您的數據節點使用基於密鑰文件的認證,所有的mongod和mongos實例(數據,配置等),需要使用--keyFile以及和指向密鑰文件的精確副本。

其次,一定要「用管理員」連接到使用mongos配置服務器後。如果這不會讓你在那裏,那麼在mongos提示符處添加一個管理員用戶,使用這些憑據進行身份驗證並再試一次。

0

除了bisharkha的答案,在這裏是一個多線索使用密鑰文件。

use admin命令,還請確保您已與認證: db.auth("user", "passwd")

相關問題