【问题标题】:Connect to mongodb URL fails after creating admin user创建管理员用户后连接到 mongodb URL 失败
【发布时间】:2022-02-16 19:40:29
【问题描述】:

我有一个连接到 MongoDB 的 Web 应用程序。在我在 mongodb 中创建管理员用户之前一切正常:

db.createUser(
  {
    user: "admin",
    pwd: "password",
    roles: [ { role: "root", db: "admin" } ]
  }
);

API 在.env 文件中写入的 URL

  • 之前:mongodb://localhost:27017/shrimp
  • 之后:mongodb://admin:password@localhost:27017/shrimp

我绑定了添加其他用户,还是不行

  • 网址:mongodb://user:newpassword@localhost:27017/shrimp

奇怪的是,当我在 mongoDB Compass,它可以连接,但是当我使用mongodb://user:newpassword@localhost:27017/shrimp时它说“身份验证失败。”

编辑

我使用的工具:mongoose、Windows 10、NextJS

mongodb://user:newpassword@localhost:27017/shrimp 现在可以连接到 mongoDB Compass:mongodb://user2:1234@localhost:27017/shrimp?authSource=shrimp 我尝试对 dbconnection.js 使用相同的代码:

const URL ="mongodb://user2:1234@localhost:27017/shrimp?authSource=shrimp"

回答

简答:加?authSource=shrimp

长答案:

  1. 创建管理员用户后,检查mongod.cfg 文件。 How to set authorization in mongodb config file?
  2. 登录mongo查看是否成功 mongo --host localhost --port 27017 -u admin -p --authenticationDatabase admin
  3. 测试mongo URL格式能否登录MongoDB Compass
    mongodb://admin:password@localhost:27017/admin?authSource=admin

如果可以登录 MongoDB Compass,链接应该在 JS 文件中有效

结果代码

const mongoose = require("mongoose")
const URL ="mongodb://admin:password@localhost:27017/admin?authSource=admin"
const connection = {};

async function dbConnect() {
  if (connection.isConnected) return;

  const db = await mongoose.connect(URL, {
    useNewUrlParser: true,
    useUnifiedTopology: true,
  });

  connection.isConnected = db.connections[0].readyState;
  console.log(connection.isConnected)
}

module.exports = dbConnect;

【问题讨论】:

    标签: node.js mongodb


    【解决方案1】:

    您使用的是什么库或驱动程序? 无论如何,您可以尝试将 ?authenticationDatabase=admin 添加到 url 的末尾。

    【讨论】:

    • 正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center
    • 我更新了我用的工具,你右加authSource=shrimp可以登录MongoDB compass,但是js文件里的代码还是不行。
    • sorry,js文件中的URL现在可以了,我会尽力编辑我的内容,谢谢:)
    【解决方案2】:

    您似乎需要在您的 MongoDB 帐户中添加一个新的数据库用户才能获得访问权限。

    转到 MongoDB 并登录您的帐户。
    选择安全下的数据库访问。
    单击“添加新数据库用户”。
    创建一个新用户(记住用户名和密码)并添加用户。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-11-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多