use*_*202 3 authentication connection mongodb
所以我设法让 mongodb 启动并运行,在 admin db 中添加了一个超级管理员用户,在我的测试表中添加了一个本地管理员用户。我已经开始了 mongod
mongod --dbpath ./ --auth
Run Code Online (Sandbox Code Playgroud)
但是,如果我跑
mongo
Run Code Online (Sandbox Code Playgroud)
从终端,我无法执行任何修改或读取,但我似乎仍然能够使用
use <DBNAME>
Run Code Online (Sandbox Code Playgroud)
如果没有提供用户名和密码,有没有办法完全拒绝连接到 mongod 实例?
这里有一个误解,use <dbname>无论数据库是否存在都可以工作,没有信息泄漏,因为它们无法运行show databases或show collections确认某些东西实际上存在(因为它们没有足够的权限)。未经身份验证的会话并不比原始 TCP 套接字更好,它看起来更像是因为您将其mongo shell用作客户端(您也可以运行mongo --nodb并执行某些操作,但这并不意味着任何事情都会受到损害,在这种情况下没有甚至不是与数据库的连接)。
因此,您要求的是一种在建立 TCP 连接之前拒绝连接的方法。但是,您必须先建立 TCP 连接,然后才能真正进行身份验证(否则您如何与数据库进行身份验证?)
如果您想拒绝来自可信 IP 地址之外的连接并锁定事物等,那么这通常是一个好主意,但它是在数据库之外、在iptables您选择的防火墙中完成的。
| 归档时间: |
|
| 查看次数: |
703 次 |
| 最近记录: |