【问题标题】:Meteor: MongoError: not authorized for query on db.collection when using authenticationMeteor:MongoError:使用身份验证时未授权查询 db.collection
【发布时间】:2016-05-12 14:29:04
【问题描述】:

我跟随 meteor/mongodb: Use different DB for authentication & read/write 到了一个 T 并在尝试查询 db 时收到错误:

Exception while invoking method 'myMethod' MongoError: not authorized for query on myDB.bobRocks

我使用以下方法在 Mongo 中设置用户:

use admin
db.createUser(
    {
    user: 'bob',
    pwd: '12345',
    roles: [
        { role: 'readWrite', db: 'myDB'},
    ]
    }
)

我的数据库调用是:

var myDB = new MongoInternals.RemoteCollectionDriver("mongodb://10.10.10.100:27017/myDB");
BobRocks = new Mongo.Collection('bobRocks', { _driver: myDB })

我终于用上了:

MONGO_URL=mongodb://bob:12345@10.10.10.100:27017/admin meteor run

我错过了什么?我会假设身份验证将遵循 MONGO_URL 声明,但它似乎没有。

【问题讨论】:

    标签: mongodb meteor


    【解决方案1】:

    如果您使用的是 linux,那么您必须像这样导出 mongourl,然后像这样运行流星。

    export MONGO_URL=mongodb://bob:12345@10.10.10.100:27017/admin meteor run
    

    或者如果你使用的是windows那么你必须设置mongourl然后meteor run。

    SET MONGO_URL=mongodb://bob:12345@10.10.10.100:27017/admin meteor run
    

    请先尝试使用 mongo cli 连接。

    你也没有在这里传递用户名和密码

    var myDB = new MongoInternals.RemoteCollectionDriver("mongodb://10.10.10.100:27017/myDB");
    

    你可以在这里传递用户名和密码,就像你这样传递 mongo url。

    var myDB = new MongoInternals.RemoteCollectionDriver("mongodb://bob:12345@10.10.10.100:27017/myDB");
    

    请确保远程服务器上存在 myDB。

    【讨论】:

    • 在实际节点应用程序的脚本中,我正在使用您提到的导出。如果我还必须在 Meteor 应用程序中传递用户名和密码,那不会否定一些安全性吗?
    • 另外,当我使用 mongocli 并使用 use admin db.auth('bob', '12345') 对“bob”进行身份验证时,我可以完全操纵 myDB(插入、查询等)
    猜你喜欢
    • 2019-02-20
    • 1970-01-01
    • 2016-10-06
    • 2018-06-13
    • 2013-07-27
    • 2021-07-17
    • 2012-02-18
    • 2011-09-27
    相关资源
    最近更新 更多