【发布时间】:2015-05-06 05:57:56
【问题描述】:
如果我在本地运行 Meteor,它会完美运行。如果我用没有username:password 的MONGO_URL 调用Meteor,它也可以完美运行。但是,如果我打开 MongoDB 身份验证并重新启动,然后使用 username:password 设置运行 Meteor,就像在 MONGO_URL="mongodb://username:password@127.0.0.1:27017/meteor" 中一样,那么当 Meteor 加载时我会遇到身份验证失败。我检查了用户名和密码是否正确。我已经读到 Meteor 和 MongoDB 身份验证可能存在问题,所以有人有这方面的任何信息吗?我正在使用以下版本:
流星 - 1.0.3.2 MongoDB - 2.6.7(通过 brew 安装)
I20150304-21:48:00.597(1)? Exception in callback of async function: MongoError: auth failed
I20150304-21:48:00.598(1)? at Object.toError (/Users/me/.meteor/packages/mongo/.1.0.11.1hg8e3j++os+web.browser+web.cordova/npm/node_modules/mongodb/lib/mongodb/utils.js:110:11)
I20150304-21:48:00.598(1)? at /Users/me/.meteor/packages/mongo/.1.0.11.1hg8e3j++os+web.browser+web.cordova/npm/node_modules/mongodb/lib/mongodb/db.js:1128:31
I20150304-21:48:00.598(1)? at /Users/me/.meteor/packages/mongo/.1.0.11.1hg8e3j++os+web.browser+web.cordova/npm/node_modules/mongodb/lib/mongodb/db.js:1843:9
I20150304-21:48:00.598(1)? at Server.Base._callHandler (/Users/me/.meteor/packages/mongo/.1.0.11.1hg8e3j++os+web.browser+web.cordova/npm/node_modules/mongodb/lib/mongodb/connection/base.js:445:41)
I20150304-21:48:00.598(1)? at /Users/me/.meteor/packages/mongo/.1.0.11.1hg8e3j++os+web.browser+web.cordova/npm/node_modules/mongodb/lib/mongodb/connection/server.js:468:18
I20150304-21:48:00.598(1)? at [object Object].MongoReply.parseBody (/Users/me/.meteor/packages/mongo/.1.0.11.1hg8e3j++os+web.browser+web.cordova/npm/node_modules/mongodb/lib/mongodb/responses/mongo_reply.js:68:5)
I20150304-21:48:00.599(1)? at [object Object].<anonymous> (/Users/me/.meteor/packages/mongo/.1.0.11.1hg8e3j++os+web.browser+web.cordova/npm/node_modules/mongodb/lib/mongodb/connection/server.js:426:20)
I20150304-21:48:00.599(1)? at [object Object].emit (events.js:95:17)
I20150304-21:48:00.599(1)? at [object Object].<anonymous> (/Users/me/.meteor/packages/mongo/.1.0.11.1hg8e3j++os+web.browser+web.cordova/npm/node_modules/mongodb/lib/mongodb/connection/connection_pool.js:201:13)
I20150304-21:48:00.599(1)? at [object Object].emit (events.js:98:17)
================================================ ==
我以为我对上述问题有答案,但可惜没有,我做了建议的更改,但我仍然无法进行身份验证。因此,提供更多详细信息:
- 我已经升级到 MonogoDB 3.0.0
- 我删除了数据库以便创建一个全新的数据库。
-
我的配置文件如下:
systemLog: destination: file path: /usr/local/var/log/mongodb/mongo.log logAppend: true storage: dbPath: /usr/local/var/mongodb net: bindIp: 127.0.0.1 security: authorization: enabled -
在“admin”数据库中创建了一个“超级用户”,如下所示:
use admin db.createUser({user: "superuser", pwd: "password", roles:["root"]})use admin -
然后我在“meteor”数据库上创建了一个用户
db.auth("superuser", "password") use meteor db.createUser({user: "meteor", pwd: "password", roles: [{ role: "readWrite", db: "meteor"}]}) -
以上步骤生成:
Successfully added user: { "user" : "meteor", "roles" : [ { "role" : "readWrite", "db" : "meteor" } ] } -
如果我执行
db.getUsers(),我会收到消息:[ { "_id" : "meteor.meteor", "user" : "meteor", "db" : "meteor", "roles" : [ { "role" : "readWrite", "db" : "meteor" } ] } ]
如果我注释掉配置中的两个安全行,那么我可以毫无问题地从 Meteor 或 RoboMongo 访问 MongoDB - 使用 mongodb:127.0.0.1:27017/meteor。如果我取消注释配置中的两个安全行,那么我将无法再从 Meteor 或 MongoDB 访问 MongoDB - 使用 mongodb://meteor:password@127.0.0.1:27017/meteor。在最后一个实例中,我继续收到身份验证失败的消息。在 MongoDB 日志中,我有:
authenticate db: meteor { authenticate: 1, nonce: "xxx", user: "meteor", key: "xxx" }
2015-03-08T14:34:44.909+0100 I ACCESS [conn7] Failed to authenticate meteor@meteor with mechanism MONGODB-CR: AuthenticationFailed UserNotFound Could not find user meteor@meteor
更新
下面的答案和上面的配置适用于 v2.6.7
【问题讨论】: