我在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
答案 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安装固定我的问题。