MongoDB未开启认证可匿名访问,创建用户后仍无需凭证查询如何解决?
MongoDB禁止匿名连接、启用访问控制操作步骤
出现你描述的问题核心原因是:仅创建账号不会自动开启MongoDB的访问控制校验,默认配置下鉴权机制处于关闭状态,因此匿名访问不受限制,带凭证连接也会触发对应提示。
前置操作(可选,建议执行)
你当前创建的superAdmin用户仅配置了readWrite角色,权限范围有限,开启访问控制后可能无法执行数据库管理操作,可在修改配置前先给账号授予更高权限:
use admin // 授予超级管理员权限,可根据实际需求调整角色范围 db.grantRolesToUser("superAdmin", ["root"])
步骤1:修改MongoDB配置文件启用鉴权
找到你环境中的MongoDB配置文件:
- Linux默认路径:
/etc/mongod.conf - Windows默认路径:MongoDB安装目录下的
bin\mongod.cfg
找到security配置段,修改为如下内容(如果原本该配置被注释,需先取消注释,注意YAML格式要求缩进为2个空格):
security: authorization: enabled
如果你是手动启动MongoDB进程不使用配置文件,也可以在启动命令中直接添加--auth参数开启鉴权。
步骤2:重启MongoDB服务让配置生效
根据你的系统环境执行对应重启操作:
- Linux(systemd管理):执行命令
sudo systemctl restart mongod - Windows:打开服务管理器(运行输入
services.msc),找到MongoDB服务右键选择「重启」 - 手动启动进程:先终止原有mongod进程,重新启动时携带
--auth参数即可
步骤3:验证配置是否生效
- 测试匿名访问:直接执行无凭证连接命令
mongo --port 27017,进入shell后执行show dbs,如果提示无权限,说明匿名访问已被禁止 - 测试凭证访问:执行你之前的带参连接命令
mongo --port 27017 -u "superAdmin" -p "admin123" --authenticationDatabase "admin"
进入shell后可正常执行查询、管理操作,且不会再弹出访问控制未启用的提示,即配置成功。
内容的提问来源于stack exchange,提问作者Faizan Saeed
相关产品推荐
相关产品推荐

