启用auth时无法从mongo shell连接到mongod(在ubuntu上)

时间:2016-05-11 17:24:16

标签: node.js mongodb

系统:ubuntu 14.04

mongodb 3.0.3 tar ball是从mongodb下载中心下载的

连接到没有auth的mongodb,然后从mongo shell创建一个用户来测试' D b。以下是命令。

db.createUser({user: "user1", 
               pwd: "test123", 
               roles: [ { role: "readWrite", db: "test" } 
 ]})

在admin db中验证了用户详细信息。以下是命令&结果:

> db.system.users.findOne({user:'user1'})
{
    "_id" : "testdb.user1",
    "user" : "user1",
    "db" : "testdb",
    "credentials" : {
        "SCRAM-SHA-1" : {
            "iterationCount" : 10000,
            "salt" : "kNfOd1vs+QT+ueH7SI6Vzw==",
            "storedKey" : "JCesIKSW1pb74ddo2Y19rEO1GVY=",
            "serverKey" : "d87Sb1htoD5K8zecAy73JPZyHdc="
        }
    },
    "roles" : [
        {
            "role" : "readWrite",
            "db" : "test"
        }
    ]
}

现在退出mongo shell,杀死了mongod。 使用auth启动mongodb,以下是命令。

$ ./mongod --auth

像往常一样连接到mongo shell,请参阅以下内容:

$ ./mongo
MongoDB shell version: 3.0.3
connecting to: test
> show collections
2016-05-11T22:33:46.302+0530 E QUERY    Error: listCollections failed: {
    "ok" : 0,
    "errmsg" : "not authorized on test to execute command { listCollections: 1.0 }",
    "code" : 13
}
    at Error (<anonymous>)
    at DB._getCollectionInfosCommand (src/mongo/shell/db.js:646:15)
    at DB.getCollectionInfos (src/mongo/shell/db.js:658:20)
    at DB.getCollectionNames (src/mongo/shell/db.js:669:17)
    at shellHelper.show (src/mongo/shell/utils.js:625:12)
    at shellHelper (src/mongo/shell/utils.js:524:36)
    at (shellhelp2):1:1 at src/mongo/shell/db.js:646
> db.auth({user:'user1', pwd:'test123'})
1
> use test
switched to db test
> db.collone.insert({name:'firstcollection'})
WriteResult({ "nInserted" : 1 })
> show collections
collone
system.indexes
> db.collone.find()
{ "_id" : ObjectId("5733669fb7d44cd444ebf028"), "name" : "firstcollection" }
> exit
bye

当我尝试在启动mongo shell时进行身份验证时,获取身份验证失败错误。见下文:

$ ./mongo test -u 'user1' -p 'test123' --authenticationDatabase 'admin'
MongoDB shell version: 3.0.3
connecting to: test
2016-05-11T22:37:21.559+0530 E QUERY    Error: 18 Authentication failed.
    at DB._authOrThrow (src/mongo/shell/db.js:1266:32)
    at (auth):6:8
    at (auth):7:2 at src/mongo/shell/db.js:1266
exception: login failed

这一切只是我试图做的POC。 一旦成功,我的目标是从mongoose客户端(从Node.js应用程序)连接到mongod。 stackoverflow帖子中的以下命令可以帮助我设置从mongoose到mongod与auth的连接。

0 个答案:

没有答案