我有一个在服务器上运行的MongoDB 4实例,副本设置在同一台计算机上,具有不同的端口。
我已经使用以下命令创建了超级用户:
use admin
db.createUser({user: "mongo_admin",pwd: "password",roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]);
然后我为新的数据库数据库创建了一个专用用户
使用database1 db.createUser({ 用户:“ user1”, pwd:“密码”, 角色:[“ readWrite”,“ dbAdmin”] });
在此之后,我启用了auth和,因此我将用户db.auth与我的database1一起使用(使用“ user1”)。
那很好,它可以工作。
现在,我的问题是:我需要创建其他数据库,然后为该数据库创建一个专用用户来管理该数据库,但是启用了身份验证后,我无法在新创建的数据库database2上执行任何操作。如果尝试,请使用我的mongo_admin超级用户连接到新数据库2,并尝试使用以下命令为此数据库创建dbAdmin:
mongo
db.auth("mongo_admin", "password")
use database2
db.createUser({user: "user2, pwd: "password",roles: ["readWrite", "dbAdmin"]});
我收到此错误:
E QUERY [js] Error: couldn't add user: not authorized on database2 to execute command
因此,现在我知道我可以在每个数据库上禁用身份验证并免费工作,但是,我不想这样做,因为数据库正在生产中,我希望避免这种情况。
有什么建议吗?