2016-07-05 71 views
0

我正在设置一个Mongo测试分片,并希望使用Mongo用户身份验证。我已经将用户添加到配置服务器上。我不确定是否需要在所有碎片上添加相同的用户。我假设我不需要在查询路由器(mongos)上添加用户。但是,当我简单地将用户添加到配置服务器(通过Mongo shell)时,如果我留在shell中,我可以进行身份​​验证。但是,只要我退出shell并重新登录,我就无法使用相同的凭据重新登录。碎片服务器确实有一个与它们相关的数据目录,就像配置服务器一样。有关如何进一步解决问题的任何想法?用mongo分片进行身份验证

创建用户

db.createUser({ user: "test", 
       pwd: "testPassword", 
       roles: [ { role: "clusterAdmin", db: "admin" }, 
          { role: "readAnyDatabase", db: "admin" }, 
          "readWrite"] }, 
       { w: "majority" , wtimeout: 5000 }) 

认证

db.auth("test", "testPassword") 

我没有指定配置服务器的数据目录(端口27019上运行,而不是27017 &数据目录具有正确的mongo进程的权限)。

mongod --configsvr --dbpath /var/lib/mongodb3 --port 27019 

回答

0

一旦蒙戈集群正确设置(查询路由器连接到配置服务器与副本碎片将&配置serers /碎片写入到磁盘),我可以简单地通过查询路由器添加用户,并得到使用Mongo Java驱动程序进行身份验证