jjzjj

mongodb - meteor 和 MongoDB : Authentication failures

coder 2023-10-27 原文

如果我在本地运行 Meteor,它会完美运行。如果我使用没有 username:passwordMONGO_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)

============================================= ==

我以为我有上述问题的答案,但遗憾的是,我进行了建议的更改,但我仍然无法进行身份验证。因此,要提供更多详细信息:

  1. 我已经升级到MonogoDB 3.0.0
  2. 我删除了数据库,以便创建一个全新的数据库。
  3. 我的配置文件如下:

     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
    
  4. 在“admin”数据库上创建了一个“ super 用户”,如下所示:

       use admin
       db.createUser({user: "superuser", pwd: "password", roles:["root"]})use admin
    
  5. 然后我在“meteor”数据库上创建了一个用户

       db.auth("superuser", "password")
       use meteor
       db.createUser({user: "meteor", pwd: "password", roles: [{ role: "readWrite", db: "meteor"}]})
    
  6. 以上步骤生成:

    Successfully added user: {
        "user" : "meteor",
        "roles" : [
            {
                "role" : "readWrite",
                "db" : "meteor"
            }
        ]
    }
    
  7. 如果我执行 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.portnet.bindIp 的任何问题>配置数据库不会简单地监听请求的设置。

如果您完成了所有这些并重新启动了 MongoDB,也许您项目中的 meteor reset 可以帮助解决任何问题。

关于mongodb - meteor 和 MongoDB : Authentication failures,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28868131/

有关mongodb - meteor 和 MongoDB : Authentication failures的更多相关文章

  1. ruby-on-rails - 在一个 Rails 应用程序中使用 PostgreSQL 的 MongoDB - 2

    我可以在一个Rails应用程序中同时使用MongoDB和PostgreSQL吗?具体来说,我最终会想要使用像MongoHQ这样的东西。到目前为止,我未能在实验中进行这项工作。令我担心的是,MongoDB文档特别指出我必须禁用ActiveRecord。任何建议将不胜感激。 最佳答案 您无需禁用ActiveRecord即可使用MongoDB。查看Mongoid只需将gem加上任何模型与您现有的任何ActiveRecord模型一起添加。您应该注意到MongoHQ只是MongoDB的托管服务,可以与任何对象文档映射器(ODM)一起使用。更多

  2. ruby - 使用 mongodb/mongoid 运行时更改模型 - 2

    我必须在mongoid模型中添加几个字段,我知道MongoDB没有迁移,但如果我继续而不删除数据库,使rails完全“重新生成”数据库,它不会显示或使用新的领域!去这里最好的方法是什么?有比删除/重新打开mongodb更软的东西吗?提前致谢卢卡 最佳答案 一般来说,应该可以在运行时用新字段更新旧文档。MongoDB中不需要迁移。您可能想编写rake任务以使用新字段和默认值更新旧文档。您可以通过检查那些默认值为nil的新字段来找到这些文档。更新简单风格:如果您使用默认值定义一个新字段,只要您设置了一个新值,就应该始终使用该值:应用程序

  3. ruby-on-rails - 我如何从 Ruby 代码连接到 mongodb? - 2

    我如何从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")

  4. ruby - MongoDB:无法从 BSON 类型 EOO 转换为 Date - 2

    我正在尝试使用聚合框架(使用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

  5. ruby - 在 Ruby 中从 MongoDB 中检索字段的子集 - 2

    我试图通过在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客户端控制台进行查询,它会工作,我会得到结

  6. Elasticsearch和MongoDB对比 - 2

    文章目录Elasticsearch和MongoDB对比关于ElasticsearchElasticsearch应用场景关于MongoDBMongoDB优点mongodb适用场景Elasticsearch和MongoDB对比Elasticsearch和MongoDB开源许可协议参考Elasticsearch和MongoDB对比关于Elasticsearch官网:https://www.elastic.co/cn/elasticsearch/Elasticistheleadingplatformforsearch-poweredsolutions.Weaccelerateresultsthatma

  7. javascript - 无法使用 Meteor 读取未定义的属性 'bcrypt' - 2

    我正在按照基本教程使用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

  8. javascript - 如何防止 Meteor.js 模板在没有数据的情况下呈现 - 2

    有人可以帮我理解Meteors模板的行为吗?我想在我的项目中实现一个通知系统,类似于ApplesGrowl。当记录写入数据库时​​,它使用简单的jQuery效果使消息出现。我简化了代码示例,以显示基本问题:代码:varMessages=newMeteor.Collection("messages");if(Meteor.isClient){Template.Notification.Message=function(){returnMessage.findOne({},{sort:{seq:-1}});};Template.Notification.rendered=function(

  9. javascript - meteor 包加载顺序 - 2

    我在Meteor上添加包的顺序对结果有什么影响吗?假设我使用bootstrap3和accountsui与bootstrap3,如果我先添加后者,反之亦然,会以同样的方式工作吗? 最佳答案 在Meteor中,您添加它们的包顺序无关紧要。meteor中有一个名为linker的模块,它分析每个包的依赖关系以确保首先加载依赖关系。例如:如果bootstrap-3是accounts-ui-bootstrap-3的依赖项,那么即使添加了bootstrap-3之后,它将首先加载。 关于javascri

  10. javascript - Meteor 的 Iron Router 不关闭模态对话框 - 2

    我正在使用Meteor和IronRouter,并且我有一个模态对话框,当它被关闭时不会隐藏背景。更准确地说,我希望在单击关闭按钮后,ironrouter将重定向到另一个页面。重定向代码确实有效,但背景仍然可见。如果我删除路由线-模式将被关闭,背景也将被关闭。这是模态框的标记:×Areyousure?Thiscannotbeundone.YesNo这是切换模态对话框的按钮:Delete这是确认模式对话框的"is"按钮上的点击事件:'click#confirm-yes-button':function(){Recipes.remove(this._id);$('#confirm

随机推荐