Nodejs mongodb api 在哪儿设置方法server认证访问 即用户名和密码

Nodejs mongodb api 在哪儿设置方法server认证访问 即用户名和密码

xuexi

7 回复

Node.js MongoDB API 在哪儿设置方法 server 认证访问(即用户名和密码)

在使用 Node.js 连接 MongoDB 数据库时,如果数据库设置了认证访问,你需要在连接字符串中包含用户名和密码。这可以通过 mongodb 包来实现。

步骤一:安装 mongodb

首先,确保你已经安装了 mongodb 包。如果没有安装,可以使用 npm 安装:

npm install mongodb

步骤二:创建连接字符串

假设你的 MongoDB 数据库的用户名是 myUser,密码是 myPassword,并且数据库运行在 localhost27017 端口上,数据库名为 myDatabase。那么,你可以创建一个包含认证信息的连接字符串:

const uri = "mongodb://myUser:myPassword@localhost:27017/myDatabase";

步骤三:连接到 MongoDB 并执行操作

接下来,你可以使用这个连接字符串来连接到 MongoDB,并执行一些基本的操作。以下是一个简单的示例,展示了如何连接到数据库并插入一条记录:

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

async function main() {
    const uri = "mongodb://myUser:myPassword@localhost:27017/myDatabase";

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

    try {
        await client.connect();
        console.log("Connected to MongoDB");

        const database = client.db('myDatabase');
        const collection = database.collection('myCollection');

        // 插入一条记录
        const doc = { name: 'John Doe', age: 30 };
        const result = await collection.insertOne(doc);
        console.log(`Inserted document with id ${result.insertedId}`);
    } catch (err) {
        console.error(err);
    } finally {
        await client.close();
    }
}

main().catch(console.error);

解释

  • 连接字符串mongodb://myUser:myPassword@localhost:27017/myDatabase 包含了用户名、密码以及数据库的信息。
  • MongoClient:用于创建一个新的客户端实例,用于与 MongoDB 服务器通信。
  • await client.connect():异步方法,用于建立与 MongoDB 的连接。
  • database.collection(‘myCollection’):选择数据库中的集合。
  • insertOne(doc):向集合中插入一条记录。

通过上述步骤,你就可以在 Node.js 中配置并连接到需要认证的 MongoDB 数据库了。


谢谢你 之前用过这个方法 但是当时不成功,现在回想起来 发现自己真的很2啊。我当时给admin 添加了认证 但是对其他的数据库没有添加 所有我访问其他数据库的时候 认证就不对 而访问admin就行了。但是这里我有一个疑问 既然给admin 添加认证 为什么其他数据库 就不是同一认证???

你的这个方法我还没试~~但是应该可以啊 我看了N久的文档 找了一方法 http://mongodb.github.io/node-mongodb-native/api-generated/db.html#authenticate

难道 每个数据库 都有自己的单独认证??

我在mongodb.config 默认开启了 auth=true的

在Node.js中使用MongoDB时,可以通过配置MongoDB的连接字符串来实现服务器认证访问(即设置用户名和密码)。这通常在连接数据库时通过URL参数来完成。

示例代码

假设你的MongoDB服务器需要用户名yourUsername和密码yourPassword进行认证,你可以使用以下方式连接到数据库:

const mongoose = require('mongoose');

// MongoDB连接字符串格式
// mongodb://<username>:<password>@<host>:<port>/<database>
const dbURI = 'mongodb://yourUsername:yourPassword@localhost:27017/yourDatabase';

mongoose.connect(dbURI, {
    useNewUrlParser: true,
    useUnifiedTopology: true
})
.then(() => console.log('Connected to the database'))
.catch(err => console.error('Failed to connect to the database', err));

解释

  • mongoose.connect(dbURI, { ... }): 使用Mongoose库连接到MongoDB。

  • dbURI: 这是MongoDB的连接字符串。格式为mongodb://<username>:<password>@<host>:<port>/<database>

    • <username>: 数据库的用户名。
    • <password>: 用户名对应的密码。
    • <host>: MongoDB服务器的地址(通常是localhost或服务器的IP地址)。
    • <port>: MongoDB服务器监听的端口,默认为27017
    • <database>: 你要连接的具体数据库名称。
  • { useNewUrlParser: true, useUnifiedTopology: true }: 这些选项用于确保与MongoDB服务器通信时使用的驱动程序版本是最新的,并且避免一些已知的兼容性问题。

这样,当你运行这段代码时,Mongoose会尝试使用指定的用户名和密码去连接MongoDB服务器。如果认证成功,你就可以开始执行数据库操作了。

回到顶部