2016-12-02 107 views
0

我有一个Node JS程序,它使用Mongo DB作为我的dbs。现在......每个人都可以访问mongo shell而不会有任何问题。Mongodb身份验证外壳/控制台

这是它的意思?我想让mongo shell远离任何其他人,即在使用shell之前必须进行身份验证。原因是我不希望人们删除数据库中的表,并通过控制台插入/修改文档。

有没有办法做到这一点?我看了一下https://docs.mongodb.com/manual/security/但是我不确定如何实现这个到我的Node Js程序(保密密码)。

任何帮助,将不胜感激。由于

回答

2

几个解决方案:

  • 限制访问你的数据库只有所需的IP地址。如果您的应用程序和数据库位于同一台计算机上,那么只有127.0.0.1 +也许是您的PC,因此您可以在GUI中运行查询。

  • 强制认证,如this link所示,使用强密码。 为了让密码在你的Node程序中保持“秘密”,我把它理解为“非硬编码”,把它变成一个env变量,并在运行时将它提供给节点,或者将它写入一个不存在于你的repo中的文件.gitignore也可以)。

有了一个有效的用户名/密码,这里是如何进行身份验证使用节点到MongoDB的:

一个MongoDB的地址有7个部分组成:

protocol:"mongodb://", 
    host:"localhost", 
    user: "user", 
    password : "password", 
    options: "?authMechanism=MONGODB-CR", 
    port:"27017", 
    db:"db_name" 

所有一起给一个字符串,如:

mongodb://user:[email protected]:27017/db_name?authMechanism=MONGODB-CR,

这应该足够了节点使用本地Mongo驱动程序进行连接。

而在壳来验证:

使用DB_NAME

db.auth( “用户”, “密码”)

,或者直接在连接:

mongo -u "user" -p "password" --authenticationDatabase "db_name"