无法创建用户
Can't create user
我在 Google Compute Engine 上使用 MongoDB 版本 2.6.6 并使用点击部署方法。
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
MongoDB 将部署在 Compute Engine 实例集群中(也称为 MongoDB 副本集)。每个实例将使用一个引导磁盘和单独的磁盘来存储数据库文件。
主节点和主节点是可以接受写入的节点。 MongoDB的复制是“单主:”一次只有一个节点可以接受写操作。
辅助节点和从属节点是从主节点复制的只读节点。
您的错误消息看起来像是您正在尝试在辅助设备上添加用户。尝试在主要中添加用户。
我遇到了与 mongo 3.2 类似的问题:
Error: couldn't add user: not master :
尝试创建具有 root 角色的新用户时。
我只使用了 mongo 的本地副本。
在我的 mongod.conf 文件中,我有以下未注释的内容:
replication:
replSetName: <node name>
注释掉并重新启动解决了问题。我猜 mongo 认为它是复制集的一部分,并且对谁是 Master 感到困惑。
编辑:
我还发现,如果您正在尝试设置复制集,并且出现上述错误,那么 运行:
rs.initiate()
这将启动一个复制集,并将当前节点设置为主节点。
退出,然后重新登录,您应该会看到:
主要>
现在根据需要创建用户。
我 运行 在编写副本集创建脚本时遇到此错误。
解决方案是在 rs.initiate()
和 db.createUser()
之间添加延迟。
副本集的创建似乎是在后台完成的,主节点需要时间才能真正成为主节点。在交互式使用中,这不会导致问题,因为在键入下一个命令时会有延迟,但在编写交互脚本时,可能需要强制延迟。
我 运行 当我以为我是 运行 mongo 3.4 但它是 mongo 3.6 时,我进入了这个问题。卸载 3.6 并安装 3.4 解决了我的问题。
我在 Google Compute Engine 上使用 MongoDB 版本 2.6.6 并使用点击部署方法。
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
MongoDB 将部署在 Compute Engine 实例集群中(也称为 MongoDB 副本集)。每个实例将使用一个引导磁盘和单独的磁盘来存储数据库文件。
主节点和主节点是可以接受写入的节点。 MongoDB的复制是“单主:”一次只有一个节点可以接受写操作。
辅助节点和从属节点是从主节点复制的只读节点。
您的错误消息看起来像是您正在尝试在辅助设备上添加用户。尝试在主要中添加用户。
我遇到了与 mongo 3.2 类似的问题:
Error: couldn't add user: not master :
尝试创建具有 root 角色的新用户时。
我只使用了 mongo 的本地副本。
在我的 mongod.conf 文件中,我有以下未注释的内容:
replication:
replSetName: <node name>
注释掉并重新启动解决了问题。我猜 mongo 认为它是复制集的一部分,并且对谁是 Master 感到困惑。
编辑:
我还发现,如果您正在尝试设置复制集,并且出现上述错误,那么 运行:
rs.initiate()
这将启动一个复制集,并将当前节点设置为主节点。
退出,然后重新登录,您应该会看到:
主要>
现在根据需要创建用户。
我 运行 在编写副本集创建脚本时遇到此错误。
解决方案是在 rs.initiate()
和 db.createUser()
之间添加延迟。
副本集的创建似乎是在后台完成的,主节点需要时间才能真正成为主节点。在交互式使用中,这不会导致问题,因为在键入下一个命令时会有延迟,但在编写交互脚本时,可能需要强制延迟。
我 运行 当我以为我是 运行 mongo 3.4 但它是 mongo 3.6 时,我进入了这个问题。卸载 3.6 并安装 3.4 解决了我的问题。