【问题标题】:Can i use a single user to connect different databases in MongoDB?我可以使用单个用户连接 MongoDB 中的不同数据库吗?
【发布时间】:2018-07-03 17:49:31
【问题描述】:

我试图在数据库“admin”中创建一个角色为“root”、“readWriteManyDatabase”的用户在 mongodb 中连接到不同的数据库,但似乎我无法使用 此用户直接连接到其他数据库,但我可以在数据库管理员中运行db.auth() 后对其他数据库进行操作。 那么,有什么方法可以让我用同一个用户直接连接到不同的数据库,但不需要先连接到数据库“admin”

【问题讨论】:

  • 你是如何连接到这些数据库的?
  • 我在数据库“admin”中创建了一个用户,并像mongo localhost:27017/blogServer -u "username" -p "password"一样使用它

标签: node.js mongodb


【解决方案1】:

确保在连接到数据库服务器时通过管理数据库进行身份验证,这可以通过传递authSource 的查询字符串参数在 MongoDB 连接字符串上指定。例如:

mongodb://username:password@my-server/my-db?&authSource=admin

如果您不指定身份验证源,那么它将尝试使用指定的数据库进行身份验证,在本例中为 my-db

如果您使用的是 shell,您可以将其指定为 authenticationDatabase 的参数,例如:

mongo localhost -u user -p password --authenticationDatabase admin

【讨论】:

  • 很好,它解决了我的问题,但是是否意味着如果我想使用admin中的用户连接到其他数据库,我应该在它之后专门使用admin数据库对其进行身份验证?
  • 嗨,还有一个问题,我在 admin 数据库中创建了用户,当我尝试使用此用户连接到另一个名为 blogServer 的数据库时,例如:mongodb://username:password@my-server/blogServer?&authSource=admin,它失败了信息:database connection failed { MongoError: Authentication failed 但是当我交换blogServeradmin 时它可以工作。为什么?
  • 这看起来像是驱动问题,也许他们还没有完全实现 authSource?
  • 是的,是mongoose V5.2.0的问题,最新版本V5.2.1已经修复了这个问题
猜你喜欢
  • 2012-07-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-10
相关资源
最近更新 更多