我有mongodb服务器,auth = true和许多数据库。我尝试使用管理员数据库远程连接到它:
mongo --host xxx admin --username admin --password secretPassword
(WORK)
mongo --host xxx products --username admin --password secretPassword
(DOESN' T WORK)
我可以连接到管理数据库并切换到产品。但开发人员使用连接字符串使用相同的用户名和密码连接到特定数据库。
我可以为每个数据库创建管理员用户,但数据库非常动态,有些已删除。我已阅读有关全局管理员的帖子,但设置用户角色并没有帮助
roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
和
--authenticationDatabase
不是一个选项,因为必须重写很多代码。
有没有办法设置一个全局管理员,任何人都可以使用用户名和密码连接到远程数据库?
答案 0 :(得分:0)
如果您使用的是MongoDB 3.0+,则用户的默认位置是admin数据库。无论如何,在这种情况下你将不得不使用--authenticationDatabase。
对于集中用户,您可以根据需要定义可访问所有数据库的角色:
https://docs.mongodb.org/manual/reference/built-in-roles/
听起来你可能想要重构数据库连接代码,特别是如果"很多代码"必须重写,这听起来像你一直在关注干 - "不要重复自己"原理