无法对添加到2.6.8副本集的Mongodb 3.0.1成员进行身份验证

时间:2015-03-23 17:38:07

标签: mongodb

我们有一个运行2.6.8的副本集,我试图用WiredTiger引擎添加一个运行3.0.1的成员。我试图通过一次更换一个成员来将副本集滚动更新到3.0.1。数据似乎已复制,但我无法使用mongo shell进行身份验证。

MongoDB shell version: 3.0.1
connecting to: test
rs:SECONDARY> use admin
switched to db admin
rs:SECONDARY> db.auth("admin", "password")
Error: 18 Authentication failed.
0

日志中还包含以下内容:

Failed to authenticate admin@admin with mechanism MONGODB-CR: AuthenticationFailed UserNotFound Could not find user admin@admin
Failed to authenticate user@collection with mechanism MONGODB-CR: AuthenticationFailed UserNotFound Could not find user user@collection

我不确定用户是否与数据一起复制,或者这是否与3.0中的身份验证机制发生变化有关。

我只在生产副本集上看到此问题。我首先尝试了我们的测试副本集并且没有任何问题。我在生产中多次尝试过,每次启动一个新的干净的AWS实例,每次我遇到同样的问题。生产和测试之间的唯一区别是IP和数据量。生产具有> 2TB的数据,而测试具有<1GB。 Monogdb使用http://repo.mongodb.org/yum/redhat/6/mongodb-org/3.0/x86_64/ yum存储库中的软件包在Amazon Linux上运行。

1 个答案:

答案 0 :(得分:1)

问题在于授权架构仍在使用版本2.4架构,即使副本集的所有成员都运行2.6。

Mongodb&lt; 3.0.2在同步之前不会检查这个,但是他们在3.0.2中更改了它以在尝试同步之前给出错误。

在添加版本3成员之前,在副本集的主节点上运行db.getSiblingDB("admin").runCommand({authSchemaUpgrade: 1 });