无法创建用户

时间:2015-07-13 15:10:24

标签: mongodb google-compute-engine

我在Google Compute Engine上使用MongoDB版本2.6.6并使用了click to deploy方法。

rs0:SECONDARY> db.createUser({user:"admin", pwd:"secret_password", roles:[{role:"root", db:"admin"}]})
2015-07-13T15:02:28.434+0000 Error: couldn't add user: not master at src/mongo/shell/db.js:1004

rs0:SECONDARY> use admin
switched to db admin
rs0:SECONDARY> db.createUser({user:"admin", pwd:"secret_password", roles:["root"]})
2015-07-13T15:13:28.591+0000 Error: couldn't add user: not master at src/mongo/shell/db.js:1004

4 个答案:

答案 0 :(得分:14)

我和mongo 3.2有类似的问题:

  

错误:无法添加用户:不是主人:

尝试使用root角色创建新用户时。

我只使用mongo的本地副本。

在我的mongod.conf文件中,我有以下未注释:

replication:
   replSetName:  <node name>

注释掉并重新启动修复了问题。我想mongo认为它是复制集的一部分,并且对主人是谁感到困惑。

编辑:

我还发现,如果您正在尝试设置复制集,并且出现上述错误,请运行:

rs.initiate()

这将启动复制集,并将当前节点设置为PRIMARY。

退出,然后重新登录,您应该看到:

PRIMARY&GT;

现在根据需要创建用户。

答案 1 :(得分:3)

MongoDB将部署在Compute Engine实例集群(也称为MongoDB副本集)中。每个实例都将使用引导磁盘和单独的磁盘用于数据库文件。

主节点和主节点是可以接受写入的节点。 MongoDB的复制是“单主机”:一次只有一个节点可以接受写操作。

辅助节点和从节点是从主节点复制的只读节点。

您的错误消息看起来像是在尝试在辅助节点上添加用户。尝试在主要用户中添加用户。

答案 2 :(得分:3)

在创建脚本副本集时遇到了此错误。

解决方案是在rs.initiate()db.createUser()之间添加延迟。

副本集创建似乎是在后台完成的,主节点实际上需要一段时间才能成为主节点。在交互式使用中,这不会导致问题,因为在键入下一个命令时会有延迟,但是当编写交互脚本时,可能需要强制延迟。

答案 3 :(得分:0)

我就遇到了这个问题,当我以为我是跑蒙戈3.4,但它是蒙戈3.6。卸载3.6和3.4安装固定我的问题。