MongoDB的:设置用户/密码来访问数据库(MongoDB: set user/password

2019-08-04 00:59发布

我试图MongoDB的设置密码,以防止访问空登录名和通(默认值)为DB。

我statring蒙戈服务器:

sudo ./mongod

启动客户端:

./mongo

设置密码:

use admin
db.addUser("root", "root")
exit

输出是:

MongoDB shell version: 2.2.0
connecting to: test
> use admin
switched to db admin
> db.addUser("root", "root")
{
    "user" : "root",
    "readOnly" : false,
    "pwd" : "2a8025f0885adad5a8ce0044070032b3",
    "_id" : ObjectId("50c90b94e28c41a388104f64")
}
> exit

Hoever,wheh我尝试用空凭据权威性(我用mViever管理界面),它仍然有效。 否则,以root / root访问权限是不是可用的编缉。 我做错了吗?

也试图启动蒙戈服务器-auth参数,相同的结果:

./mongod -auth

UPD:与-auth参数开始不能与任何通登录后。 获得:

Thu Dec 13 03:27:38 uncaught exception: error {
    "$err" : "unauthorized db:admin ns:admin.system.users lock type:1 client:127.0.0.1",
    "code" : 10057
}

更新:我不知道什么是布莱恩?

> db.auth("root","root");
1
> ^C
bye

它可以登录。 让我们重新开始./mongod --auth./mongo

MacBook-Pro-Ilya:bin ilyarusanen$ ./mongo
MongoDB shell version: 2.2.2
connecting to: test
> db.auth("root","root")
Error: { errmsg: "auth fails", ok: 0.0 }
0
> db.test.insert({"yeah":"2342"})
Fri Dec 14 08:52:05 uncaught exception: getlasterror failed: { "errmsg" : "need to login", "ok" : 0 }
> use admin
switched to db admin
> db.addUser("root","root")
Fri Dec 14 08:52:14 uncaught exception: error {
    "$err" : "unauthorized db:admin ns:admin.system.users lock type:1 client:127.0.0.1",
    "code" : 10057
}
> db.auth("root","root")
1

为什么在一开始可以登录? 为什么重启后蒙哥无法登录? 为什么失败的尝试后adduser的,它变得能够登录? 谢谢。

UPDATE2:MongoHub似乎权威性确定。 然而,从我的NodeJS仍然无法登录:我用这样的代码:

mongo_db.open(function(err,data){
  if(data){
    data.authenticate("root", "root",function(err2,data2){
         if(data2){
             console.log("Database opened");
         }
         else{
             console.log(err2);
         }
    });
  } else {
       console.log(err);
  }
});

而我得到:

{ [MongoError: auth fails] name: 'MongoError', errmsg: 'auth fails', ok: 0 }

但是提到,MongoHub具有相同的凭证工作正常。

Answer 1:

从您的评论你提到你正在使用mViewer。 mViewer的0.9.1版本不支持认证。 根据这个问题上mViewer GitHub上,这是在0.9.2版本,这是10月份针对版本已解决

开始认证节点之前,登录到节点并添加一个用户。 然后启动节点--auth并连接到外壳没有mViewer。

在这一点上,你可以连接到管理数据库,并验证您的管理员用户:

use admin
db.auth('root', 'root')

既然你设置一个管理员用户,将有机会获得所有的数据库,你需要对管理数据库进行身份验证。 一旦你做到了这一点,你将有机会获得所有数据库。 您也可以到任何数据库上创建新的用户,或对所有的数据库创建新的只读用户。

如果您创建只能访问一个数据库的新用户,该用户将需要use该数据库和db.auth(name, pass)反对。

如果您创建具有读取所有数据库只访问一个新的用户,他们会use admin ,然后db.auth(name, pass) ,以获得他们只读到所有数据库的访问

你可以找到设置身份验证的详细信息在这里和更多信息有关设置用户在这里

注意:当您启动一个节点而不 --auth则没有验证功能。 这意味着您可以与外壳和连接db.auth('root','root')但它不会做任何事情,只要接入而言。 的MongoDB不会拒绝访问的数据库,而不--auth (命令行选项--keyFile在分片设置或副本集)



文章来源: MongoDB: set user/password to access to db