为什么MongoDB中出现UserNotFound错误?

时间:2016-06-08 14:28:01

标签: node.js linux bash mongodb

我希望能够访问mongodb://admin:password@db:27017/testdb,但我一直在

Command: ./node_modules/east/bin/east migrate --adapter east-mongo --url mongodb://admin:password@db/testdb
[conn7] SCRAM-SHA-1 authentication failed for admin on testdb from client 172.17.2.60 ; UserNotFound Could not find user admin@testdb

db是主机名。这就是我所做的:

mongod --storageEngine wiredTiger --httpinterface --rest --master --auth &
mongo admin --eval "db.createUser({user: 'admin', pwd: 'password', roles:[{role:'root',db:'admin'}]});"

如果我这样做

mongo admin -u admin -p password --host db --port 27017

然后show dbs有效。

现在我想访问我尚未创建的testdb,但根据我的理解,不存在的数据库是即时创建的?

mongo testdb -u admin -p password --host localhost --port 27017
2016-06-08T16:14:02.146+0200 E QUERY    Error: 18 Authentication failed.

问题

任何人都可以看到我无法连接的原因吗?

1 个答案:

答案 0 :(得分:3)

您正在尝试针对不存在或为空的数据库进行身份验证。这就是身份验证失败的原因。

我会

  1. 登录MongoDB。
  2. 执行use testdb切换到 testdb 数据库
  3. 使用适当的选项执行db.createuser(...)以创建可用于进行身份验证的用户/密码
  4. 然后你应该能够做你所描述的。