Nodejs中mongodb怎么用用户名密码登录?

Nodejs中mongodb怎么用用户名密码登录?

我用原生的mongodb模块,但是找半天资料都找不到怎么验证,求大神 var mongodb = require(‘mongodb’); var mongoServer = new mongodb.Server(‘localhost’, 27017, {auto_reconnect: true}); var dbClient = new mongodb.Db(‘mycoll’, mongoServer, {safe: true});

10 回复

当然可以!在 Node.js 中使用 MongoDB 并通过用户名和密码进行身份验证是一个常见的需求。以下是如何实现这一功能的步骤和示例代码。

步骤概述

  1. 安装 MongoDB 驱动:确保你已经安装了 mongodb 模块。

    npm install mongodb
    
  2. 连接到 MongoDB 数据库:使用 MongoClient 类来创建一个数据库连接,并提供用户名和密码。

示例代码

const { MongoClient } = require('mongodb');

// MongoDB 的连接字符串,包括用户名、密码和数据库名
const uri = "mongodb://<username>:<password>@localhost:27017/<dbname>?authSource=admin";

async function connect() {
    const client = new MongoClient(uri, { useNewUrlParser: true, useUnifiedTopology: true });

    try {
        // 连接到 MongoDB 服务器
        await client.connect();
        console.log("Connected to MongoDB");

        // 选择数据库并执行操作
        const db = client.db('<dbname>');
        
        // 示例:插入一条记录
        const collection = db.collection('mycollection');
        const result = await collection.insertOne({ name: 'John Doe', age: 30 });
        console.log("Inserted document:", result.ops[0]);

    } catch (error) {
        console.error("Error connecting to MongoDB:", error);
    } finally {
        // 关闭数据库连接
        await client.close();
        console.log("Disconnected from MongoDB");
    }
}

// 调用连接函数
connect();

解释

  • 连接字符串uri 是 MongoDB 的连接字符串,其中包含了数据库的用户名、密码和数据库名。authSource=admin 表示认证信息将从 admin 数据库中获取。

  • MongoClientMongoClient 是用于连接 MongoDB 的主要类。通过传递连接字符串和一些选项(如 useNewUrlParseruseUnifiedTopology),你可以安全地建立连接。

  • 连接和关闭:在 try 块中,我们尝试连接到 MongoDB 并执行一些操作(例如插入文档)。如果发生错误,则会在 catch 块中捕获并处理。无论成功还是失败,在 finally 块中都会关闭数据库连接。

希望这能帮助你理解如何在 Node.js 中通过用户名和密码连接到 MongoDB。如果你有任何其他问题或需要进一步的帮助,请告诉我!


文档,调用Db对象的authenticate()方法。

当然,现在官方建议用MongoClient连接数据库。它的connect()方法的第一个参数是连接URL字符串,其中可以直接包含用户名和密码。

mongodb.connect('mongodb://username:password[@ip](/user/ip):port/dbName',function(err,db){
})

看文档官方推荐MongoClient,但是有各问题想请教下,因为MongoClient.connect没有返回值,那么是不是就没办法封装了,每次连接都必须调用MongoClient.connect重新连接

用戶名密碼不安全 還是用公鑰私鑰吧。。。。

限制ip访问就好了。。

mongo默认启动是没有密码的吧?

默认是没有用户名和密码,是吗

要在Node.js中使用MongoDB的原生驱动程序通过用户名和密码进行身份验证,你需要配置连接字符串以包含认证数据库以及用户名和密码。以下是如何实现的示例代码:

const MongoClient = require('mongodb').MongoClient;

// 替换为你的认证数据库、用户名和密码
const dbName = 'your_database_name';
const username = 'your_username';
const password = 'your_password';

// MongoDB服务器地址和端口
const uri = `mongodb://${username}:${password}@localhost:27017/${dbName}`;

// 创建一个新的MongoClient实例
const client = new MongoClient(uri, { useNewUrlParser: true, useUnifiedTopology: true });

client.connect(err => {
  if (err) {
    console.error('Failed to connect', err);
    return;
  }
  console.log("Connected successfully to server");

  const db = client.db(dbName);

  // 在这里你可以执行你的查询操作
  // db.collection('collection_name').find(...).toArray(function(err, docs) { ... });

  // 关闭连接
  client.close();
});

解释

  • uri: 这是用于建立连接的统一资源标识符(URI),它包含了连接到MongoDB所需的所有信息,包括主机名、端口、数据库名称以及认证所需的用户名和密码。

  • MongoClient: 是MongoDB Node.js驱动程序中的主要类,用于创建新的客户端实例并管理与MongoDB服务器的连接。

  • .connect(): 这个方法用于初始化客户端与MongoDB服务器之间的连接。如果连接成功,它会触发回调函数,在其中可以执行数据库操作。

  • .db(): 此方法用于选择数据库。即使已经通过认证数据库进行了身份验证,你也需要显式地选择你要使用的数据库。

这样,你就可以使用用户名和密码安全地连接到MongoDB数据库了。确保替换your_database_nameyour_usernameyour_password为你自己的实际值。

回到顶部