MongoError:没有经过身份验证的用户

2023-12-21

我正在尝试编写一个脚本来使用以下命令将管理员用户和通用用户添加到 MongoDB 数据库mongodbNodeJS 驱动程序 - 版本3.0.1

我可以创建数据库的管理员用户,但不能创建普通用户。我总是得到MongoError: there are no users authenticated。通过查看文档,验证用户身份的唯一方法是通过 URL。我已经从指定路径完全删除了数据库,尝试了多次,但仍然卡住了。

这是我到目前为止所得到的,

const MongoClient = require('mongodb').MongoClient;
const format = require('util').format;
const config = require("./config.json");

var adminUser = process.argv[2],
adminPassword = process.argv[3],
url = `mongodb://${config.database.location}:${config.database.port}`,
authURL = `mongodb://%s:%s@${config.database.location}:${config.database.port}/?authMechanism=SCRAM-SHA-1&authSource=admin`;

if (!adminUser || !adminPassword) {
   throw new Error("Please enter administrator username and password!\nUsage:\tnode init.js <adminUserName> <adminPassword>\n\n");
}

MongoClient.connect(url, function (err, client) {
    if (err) throw err;
    console.log("Connected successfully to server");
    const db = client.db(config.database.name);
    var adminDb = db.admin();
    adminDb.addUser(adminUser, adminPassword, {
        roles: [{
           role: "userAdminAnyDatabase",
           db: "admin"
        }]
    }).then(function (err, result) {
            MongoClient.connect(format(authURL, encodeURIComponent(adminUser), encodeURIComponent(adminPassword)), function (err, authClient) {
                  if (err) throw err;
                  console.log('Authenticated Successfully');
                  const db = client.db(config.database.name);
                  var adminDb = db.admin();
                  db.addUser(config.database.auth.username, config.database.auth.password, {
                         roles: [{
                             role: "readWrite",
                             db: config.database.name
                         }]
               }).then(function () {
                   console.log("Setup completed!");
                   authClient.close();
                   client.close();
               }).catch(function (err) {
                   throw err.stack;
        });
      });
   });
 });

这是我的mongod.cfg,配置文件mongod过程:

systemLog:
      destination: file
      path: D:\MongoDB\logs\mongod.log
storage:
      dbPath: D:\MongoDB\database
security:
      authorization: "enabled"

最后是配置文件,config.json:

{
  "database": {
    "location": "localhost",
    "name": "mongodb-test",
    "port": 27017,
    "auth": {
        "username": "testuser",
        "password": "welcome"
     }
   }
 }

解决办法是先关闭客户端,然后重新连接MongoDB。这次用新的client由返回connect.

上面代码的相关部分是:

.......
............
adminDb.addUser(adminUser, adminPassword, {
    roles: [{
        role: "userAdminAnyDatabase",
        db: "admin"
    }]
}).then(function (result) {
    if (result && result.user) {
        console.log("Admin user created successfully");
        client.close(); // close the previous connection!
    }
    MongoClient.connect(format(authURL, encodeURIComponent(adminUser), encodeURIComponent(adminPassword)), function (err, authClient) {
        if (err) throw err;
        console.log('Authenticated Successfully');
        const db = authClient.db() // this is important!
   ....
   ........
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MongoError:没有经过身份验证的用户 的相关文章

随机推荐

  • 为什么 Mongoose 不验证空文档?

    假设我有一个非常简单的模式 带有一个始终返回 false 的自定义验证函数 var MofoSchema new mongoose Schema name String MofoSchema path name validate funct
  • 60 秒后阻止操作调用超时 - 如何访问结果?

    我正在尝试调用 Apache OpenWhisk 操作 使用 JavaScript SDK 作为远程函数 我想等待函数结果可在我的应用程序中使用 这通常通过使用阻塞调用来处理 例如 ow actions invoke name blocki
  • 多语言网站 - 如何设置所需的默认语言?

    我用 joomla 多语言制作网站 塞尔维亚语和英语 我正在使用 joomla 3 3 3 和 joomla 内置对多语言的支持 但我想将塞尔维亚语设置为默认语言 因此 当用户访问我的网站时 默认情况下总是使用塞尔维亚语 怎么做 谢谢 您必
  • 将日期添加到日期对象[重复]

    这个问题在这里已经有答案了 可能的重复 如何在今天的日期上添加天数 https stackoverflow com questions 3818193 how to add number of days to todays date 我很困
  • 安装 libCurl - ruby​​ 1.9.3 ..rails 3.2.12 ..Windows

    所以 我正在尝试让 feedzirra 启动并运行 ruby 1 9 3p448 Rails 3 2 12 我去了http curl haxx se download html Win32 http curl haxx se downloa
  • 如何使用内容解析器/提供者测试类?

    我正在尝试测试查询内容解析器的类 我想用MockContentResolver并嘲笑query方法 问题是这个方法是最终的 我应该怎么办 使用模拟框架 模拟其他类 提前致谢 public class CustomClass private
  • 如何在无网格 2D 平面上使用 A* 寻路算法?

    如何在没有节点或单元的无网格 2D 平面上实现 A 算法 我需要物体能够绕过目标途中相对较多的静态和移动障碍物 我当前的实现是在对象周围创建八个点 并将它们视为假想的相邻正方形的中心 这些正方形可能是对象的潜在位置 然后我计算每个函数的启发
  • ng-template 错误:模板上下文未定义名为 ... (Kendo Grid) 的成员

    我在尝试在 Angular 中将 ng template 与 Kendo Grid 一起使用时遇到问题 我的 html 是有效的 启动时可以正常编译和运行 但 Visual Studio Code 会显示此错误 模板上下文未定义名为 col
  • 如何在R中计算后代的平均出生年份?

    我想知道每个人的直系后代的平均出生年份 包 pedigree 有一个函数 countOff 可以计算所有后代 包括孙子 这不是我想要的 这是我的数据框 df ID lt 1 30 MomID lt c NA NA NA NA NA NA N
  • React App 安装后编译失败

    运行安装脚本后 服务器启动并提供一个页面 在 无法编译行 之后显示相同的文本 我正在运行 Windows 10 自动更新今天刚刚更新了我的电脑 就在我安装 create react express 之前 PS H mern passport
  • 计算 InfluxDB 中开始和结束事件之间的持续时间

    我对 InfluxDB 有两个写入点 一个是开始 另一个是结束 我只需要确定这两个事件之间的持续时间 并围绕它进行查询 InfluxDB有difference 聚合方法 但它不适用于时间元字段 提供自定义时间戳值是实现此目的的唯一方法吗 A
  • maven程序集,避免zip文件中的完整路径?

    我有一个多模块项目 其中包含 2 个模块 每个模块都有自己的 pom xml 和指向这些模块的父 pom xml 当我在父 pom 上运行 mvn clean package 时 每个项目最终都会在其自己的目标文件夹下生成一个 zip 文件
  • 无法将图像上传到 WCF Rest 服务

    我正在创建 WCF Rest 服务以从移动应用程序上传图像 但我得到了 远程服务器返回错误 400 错误请求 任何人都可以指出我做错了什么吗 以下是我的定义 OperationContract WebInvoke BodyStyle Web
  • Vim 和 Java:自动添加 java import 语句

    The tip http vim wikia com wiki Add Java import statements automatically错误是 E349 光标下没有标识符 E433 没有标签文件 和 E426 找不到标签 公共 我觉
  • SQL 查询 - 跨多个字段搜索

    我正在尝试实现一种搜索 您可以在其中输入多个搜索词来形成 AND 条件 它还应该在数据库的不同字段中进行搜索 例如 当你进入时的你 比尔 西雅图 你应该得到一个记录NAME火柴Bill and CITY火柴Seattle 你不应该得到任何只
  • 使用 JAXB 解组 XML,无需取消转义字符

    想象一下以下情况 我们从某些外部工具收到一个 xml 文件 最近 在此 xml 中 节点名中或其 richcontent 标记中可能存在一些转义字符 如以下示例 简化 所示
  • NSMutableData 消失

    在我的程序中 我有一个 NSMutableData 变量 用于收集信息http www nhara org scored races 2013 htm http www nhara org scored races 2013 htm 大约第
  • peewee - 与 Database() 初始化分开定义模型

    我需要使用一些 ORM 引擎 比如peewee 用于在我的 python 应用程序中处理 SQLite 数据库 然而 大多数此类库都提供这样的语法来定义models py import peewee db peewee Database h
  • React:无法导入 .tsx 文件

    刚开始将 TypeScript 与 React 结合使用 当我导入来自 tsx 文件的组件时 默认情况下它假定它是 js 文件 该错误表明该目录中没有 About js 文件或 Contact js 文件 此外 TS linter 不允许我
  • MongoError:没有经过身份验证的用户

    我正在尝试编写一个脚本来使用以下命令将管理员用户和通用用户添加到 MongoDB 数据库mongodbNodeJS 驱动程序 版本3 0 1 我可以创建数据库的管理员用户 但不能创建普通用户 我总是得到MongoError there ar