如果我在本地运行 Meteor,它会完美运行。如果我使用没有 username:password 的 MONGO_URL 调用 Meteor,它也能正常工作。但是,如果我打开 MongoDB 身份验证并重新启动,然后使用 username:password 集运行 Meteor,如 MONGO_URL="mongodb://username:password@127.0.0.1:27017/meteor",然后我在 Meteor 加载时遇到身份验证失败。我已经检查过用户名和密码是否正确。我读到 Meteor 和 MongoDB 身份验证可能存在问题所以有人有这方面的任何信息吗?我正在使用以下版本:
meteor - 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)
============================================= ==
我以为我有上述问题的答案,但遗憾的是,我进行了建议的更改,但我仍然无法进行身份验证。因此,要提供更多详细信息:
我的配置文件如下:
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”数据库上创建了一个“ super 用户”,如下所示:
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
最佳答案
我没有看到您描述的问题,也没有看到代码或不知道您是如何“打开”我需要猜测的 MongoDB 身份验证的 - 所以让我们关注是什么让事情对我有用。
您应该检查用户是在哪里创建的。在 MongoDB 中有多个数据库,每个数据库都有自己的用户。使用连接字符串时
mongodb://username:password@127.0.0.1:27017/meteor
您正在对 meteor 数据库进行身份验证。使用诸如 RoboMongo 之类的工具,我会检查用户是否确实在该数据库中,或者您是否在 admin(或任何其他)数据库中创建了它。
快速总结:
在保护 MongoDB 时,您需要设置管理员帐户,更改 mongodb.conf 文件,使其包含 auth = true 行,然后重新启动。然后使用管理员帐户创建一个新的(低权限)数据库用户,该用户只能访问 meteor 数据库。您可以像这样使用命令行执行此操作(2.6 的代码,因为这是您的问题,将是下一个 Meteor 版本的默认设置):
db.createUser(
{ user: "username",
pwd: "password",
roles: [
{ role: "readwrite", db: "meteor" }
]
})
如果您在与 Meteor 相同的盒子上运行 mongod 我认为我们可以安全地排除 net.port 或 net.bindIp 的任何问题>配置数据库不会简单地监听请求的设置。
如果您完成了所有这些并重新启动了 MongoDB,也许您项目中的 meteor reset 可以帮助解决任何问题。
关于mongodb - meteor 和 MongoDB : Authentication failures,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28868131/
我可以在一个Rails应用程序中同时使用MongoDB和PostgreSQL吗?具体来说,我最终会想要使用像MongoHQ这样的东西。到目前为止,我未能在实验中进行这项工作。令我担心的是,MongoDB文档特别指出我必须禁用ActiveRecord。任何建议将不胜感激。 最佳答案 您无需禁用ActiveRecord即可使用MongoDB。查看Mongoid只需将gem加上任何模型与您现有的任何ActiveRecord模型一起添加。您应该注意到MongoHQ只是MongoDB的托管服务,可以与任何对象文档映射器(ODM)一起使用。更多
我必须在mongoid模型中添加几个字段,我知道MongoDB没有迁移,但如果我继续而不删除数据库,使rails完全“重新生成”数据库,它不会显示或使用新的领域!去这里最好的方法是什么?有比删除/重新打开mongodb更软的东西吗?提前致谢卢卡 最佳答案 一般来说,应该可以在运行时用新字段更新旧文档。MongoDB中不需要迁移。您可能想编写rake任务以使用新字段和默认值更新旧文档。您可以通过检查那些默认值为nil的新字段来找到这些文档。更新简单风格:如果您使用默认值定义一个新字段,只要您设置了一个新值,就应该始终使用该值:应用程序
我如何从Ruby代码连接到mongodb? 最佳答案 首先,您必须安装MongoDbgem:geminstallmongo然后运行代码:require'rubygems'#notnecessaryforRuby1.9require'mongo'db=Mongo::Connection.new.db("mydb")#ORdb=Mongo::Connection.new("localhost").db("mydb")#ORdb=Mongo::Connection.new("localhost",27017).db("mydb")
我正在尝试使用聚合框架(使用ruby)并像这样投影日期:db['requests'].aggregate([{"$project"=>{_id:0,method:'$method',user:'$user',year:{'$year'=>'$timestamp'}}}])文档是这样的:{_id:ObjectId("5177d7d7df26358289da7dfd"),timestamp:ISODate("2013-04-12T03:58:05+00:00"),method:"POST",status:"200",inputsize:"874",outputsize:"4981",u
我试图通过在Ruby中进行的查询从MongoDB获取字段的子集,但它似乎不起作用。它不返回任何结果这是ruby代码:coll.find("title"=>'Halo',:fields=>["title","isrc"])#thisdoesn'twork如果我删除字段散列,它会工作,返回包含所有字段的结果coll.find("title"=>'Halo')#thisworks查看mongodb控制台,第一个查询在mongodb服务器上结束,如下所示:{title:"Halo",fields:["title","isrc"]}如果我尝试从mongo客户端控制台进行查询,它会工作,我会得到结
文章目录Elasticsearch和MongoDB对比关于ElasticsearchElasticsearch应用场景关于MongoDBMongoDB优点mongodb适用场景Elasticsearch和MongoDB对比Elasticsearch和MongoDB开源许可协议参考Elasticsearch和MongoDB对比关于Elasticsearch官网:https://www.elastic.co/cn/elasticsearch/Elasticistheleadingplatformforsearch-poweredsolutions.Weaccelerateresultsthatma
我正在按照基本教程使用TurkServer,但从一开始就出现错误。运行时出现的错误:meteor--settingssettings.jsonW20160615-01:19:27.320(-4)?(STDERR)W20160615-01:19:27.406(-4)?(STDERR)~/.meteor/packages/meteor-tool/.1.3.3.b5ue33++os.osx.x86_64+web.browser+web.cordova/mt-os.osx.x86_64/dev_bundle/server-lib/node_modules/fibers/future.js:28
有人可以帮我理解Meteors模板的行为吗?我想在我的项目中实现一个通知系统,类似于ApplesGrowl。当记录写入数据库时,它使用简单的jQuery效果使消息出现。我简化了代码示例,以显示基本问题:代码:varMessages=newMeteor.Collection("messages");if(Meteor.isClient){Template.Notification.Message=function(){returnMessage.findOne({},{sort:{seq:-1}});};Template.Notification.rendered=function(
我在Meteor上添加包的顺序对结果有什么影响吗?假设我使用bootstrap3和accountsui与bootstrap3,如果我先添加后者,反之亦然,会以同样的方式工作吗? 最佳答案 在Meteor中,您添加它们的包顺序无关紧要。meteor中有一个名为linker的模块,它分析每个包的依赖关系以确保首先加载依赖关系。例如:如果bootstrap-3是accounts-ui-bootstrap-3的依赖项,那么即使添加了bootstrap-3之后,它将首先加载。 关于javascri
我正在使用Meteor和IronRouter,并且我有一个模态对话框,当它被关闭时不会隐藏背景。更准确地说,我希望在单击关闭按钮后,ironrouter将重定向到另一个页面。重定向代码确实有效,但背景仍然可见。如果我删除路由线-模式将被关闭,背景也将被关闭。这是模态框的标记:×Areyousure?Thiscannotbeundone.YesNo这是切换模态对话框的按钮:Delete这是确认模式对话框的"is"按钮上的点击事件:'click#confirm-yes-button':function(){Recipes.remove(this._id);$('#confirm