这是因为MongoDB 3.0以后的版本引入了访问控制功能,需要进行用户认证授权才能进行操作。如果您是root用户登录的MongoDB,需要先创建一个具有足够权限的用户并授权给config数据库。

具体步骤如下:

  1. 进入MongoDB命令行界面,切换到admin数据库。
mongo
use admin
  1. 创建一个管理员用户,例如:
db.createUser({user: "admin", pwd: "password", roles: [{role: "root", db: "admin"}]})

其中,user为用户名,pwd为密码,roles为该用户拥有的角色和数据库。

  1. 授权config数据库给管理员用户。
use config
db.grantRolesToUser("admin", [{role: "readWrite", db: "config"}])

其中,admin为用户名,readWrite为该用户的角色,config为授权的数据库。

  1. 退出MongoDB命令行界面,并重新登录MongoDB。
exit
mongo -u admin -p password --authenticationDatabase admin

其中,-u为用户名,-p为密码,--authenticationDatabase指定认证的数据库。

  1. 现在,您可以在MongoDB中执行操作了。
use config
db.getCollectionNames()

如果以上步骤无法解决问题,请检查您的MongoDB配置文件是否启用了授权功能。如果没有启用,需要修改配置文件并重启MongoDB。

我是root用户登陆的mongo还是报errmsg not authorized on config to execute command

原文地址: https://www.cveoy.top/t/topic/bn4p 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录