如何配置MongoDB认证以实现类似Atlas的任意数据库URI连接
服务器部署MongoDB后通过URI连接的认证问题
配置过程
我需要在服务器部署MongoDB,希望能像Atlas那样通过数据库URI连接,支持的URI格式示例如下:
mongodb://<uname>:<password>@ip_addr:27017 mongodb://<uname>:<password>@ip_addr:27017/admin mongodb://<uname>:<password>@ip_addr:27017/test mongodb://<uname>:<password>@ip_addr:27017/any_database
我按以下步骤配置认证:
- 修改
/etc/mongod.conf启用授权:
security: authorization: enabled
- 启用授权前,在admin库创建超级用户:
> mongosh > use admin > db.createUser({user:"root",pwd:"pass1234",roles:["root"]})
- 重启mongod服务:
systemctl restart mongod
遇到的问题
认证功能已生效,但仅能通过以下两个URI成功连接:
mongodb://root:root1234@ip_addr:27017mongodb://root:root1234@ip_addr:27017/admin
使用以下URI连接时会出现认证错误:
mongodb://root:root1234@ip_addr:27017/testmongodb://root:root1234@ip_addr:27017/any_database(期望像Atlas一样,若目标数据库不存在则自动创建,且root用户本应拥有创建任意数据库的权限)
我尝试给该用户添加userAdminAnyDatabase、dbAdminAnyDatabase、readWriteAnyDatabase等角色,未指定具体数据库,但执行db.getUsers()时发现所有用户都关联到admin数据库。想问创建超级用户时哪里出错了?
内容的提问来源于stack exchange,提问作者Rajat Kumar
相关产品推荐
相关产品推荐

