我有一个Node JS程序,它使用Mongo DB作为我的dbs。现在......每个人都可以毫无问题地访问mongo shell。
这是它的意思吗?我想让mongo shell远离其他任何人,即你必须在使用shell之前进行身份验证。原因是我不希望人们删除数据库中的表,并通过控制台插入/修改文档。
有办法做到这一点吗?我查看了https://docs.mongodb.com/manual/security/但是我不知道如何将这个实现到我的Node Js程序(保密密码)。
任何帮助将不胜感激。感谢
答案 0 :(得分:2)
一些解决方案:
将对数据库的访问权限仅限于所需的IP地址。如果您的应用程序和数据库位于同一台计算机上,那么只有127.0.0.1 +可能是您的PC,因此您可以在GUI中运行查询。
使用强密码强制执行this link中的身份验证。 保密密码'在你的Node程序中,我理解为"不是硬编码",使它成为env变量并在运行时将其提供给节点,或者将其写入不存在于repo中的文件中(。 gitignore也有效。)
使用有效的用户/密码,以下是如何使用Node对mongodb进行身份验证的方法:
mongodb地址有7个组成部分:
protocol:"mongodb://",
host:"localhost",
user: "user",
password : "password",
options: "?authMechanism=MONGODB-CR",
port:"27017",
db:"db_name"
所有这些都给出了一个字符串:
mongodb://user:password@localhost:27017/db_name?authMechanism=MONGODB-CR
,
这应该足以让Node使用本机Mongo驱动程序进行连接。
并在shell中进行身份验证:
使用db_name
db.auth("用户","密码")
或直接连接:
mongo -u "user" -p "password" --authenticationDatabase "db_name"