使用 mongo shell 登录而不显示我的密码?

使用 mongo shell 登录而不显示我的密码?

我如何在不显示密码的情况下登录mongoshell?一切都说要么使用

mongo -u user -p password --authenticationDatabase admin

或者

mongo
> use admin;
> db.auth('user', 'password')

我不喜欢这两种方式。第一种会在 cmd 的历史记录中留下一条命令。第二种不在历史记录中,但仍会以纯文本形式显示在屏幕上。我尝试只指定一个用户,希望得到一个在我输入时不显示字符的密码提示,但这两种情况都会发生错误。

有没有一种方法可以登录 MongoDB,而不会将密码显示在屏幕上或将其存储在不安全的文件中(例如 .bat 或任何其他文件)?

答案1

这是目前开放的功能请求(截至 2.6)。如需投票/跟踪,请参阅服务器-3788

我能想到的实现你目前要求的唯一方法是不使用用户/密码(即MONGODB CR 数据库) 完全没有。如果你改用X509 证书进行身份验证(2.6 版新增,需要启用 SSL 的版本),那么您将不再有纯文本显示的问题,并且您的实例总体上将更加安全。这就像用锤子敲核桃,但如果这是一项要求,那么在功能请求完成之前,它是唯一可用的实际选项。

答案2

您可以从命令行使用一种方法,这种方法不会回显您的密码:指定-p--password参数而不提供密码。在这种情况下,系统将提示您输入密码。

例如:

# Short parameter form
mongo -u user -p --authenticationDatabase admin

# Long parameter form
mongo --username user --password --authenticationDatabase admin

shell 输出将类似于:

MongoDB shell version: 3.2.11
Enter password: %

我早在 MongoDB 2.4(2016 年 3 月达到使用寿命)时就对此进行了测试。

相关内容