MongoDB(15) 如何在MongoDB中启用身份验证?

在MongoDB中启用身份验证以确保数据库的安全性非常重要。启用身份验证的过程涉及以下几个步骤:

  1. 创建管理员用户
  2. 修改配置文件以启用身份验证
  3. 重启MongoDB服务
  4. 验证身份验证配置

下面我将详细介绍在Ubuntu(及其他基于systemd的Linux系统)、Windows和macOS三种操作系统上如何启用MongoDB的身份验证,并给出示例代码。

在Ubuntu(及其他基于systemd的Linux系统)上

1. 创建管理员用户

首先,确保MongoDB实例在没有身份验证的情况下运行。然后,通过MongoDB shell连接到数据库并创建管理员用户。

  1. 启动MongoDB shell

    bash 复制代码
    mongo
  2. 切换到admin数据库

    javascript 复制代码
    use admin
  3. 创建管理员用户

    javascript 复制代码
    db.createUser({
      user: "admin",
      pwd: "secure_password", // 请使用强密码
      roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
    })

2. 修改配置文件以启用身份验证

MongoDB的默认配置文件通常位于 /etc/mongod.conf。编辑该文件启用身份验证。

  1. 打开配置文件

    bash 复制代码
    sudo nano /etc/mongod.conf
  2. 启用身份验证

    security部分添加authorization:

    yaml 复制代码
    security:
      authorization: enabled

3. 重启MongoDB服务

使更改生效,重启MongoDB服务:

bash 复制代码
sudo systemctl restart mongod

4. 验证身份验证配置

  1. 重新启动MongoDB shell并使用身份验证连接

    bash 复制代码
    mongo -u "admin" -p "secure_password" --authenticationDatabase "admin"
  2. 验证连接

    成功连接后,可以执行一些命令来验证身份验证是否配置正确。

在Windows上

1. 创建管理员用户

确保MongoDB实例在没有身份验证的情况下运行。

  1. 启动MongoDB shell

    cmd 复制代码
    mongo
  2. 切换到admin数据库

    javascript 复制代码
    use admin
  3. 创建管理员用户

    javascript 复制代码
    db.createUser({
      user: "admin",
      pwd: "secure_password", // 请使用强密码
      roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
    })

2. 修改配置文件以启用身份验证

MongoDB的默认配置文件通常位于 C:\Program Files\MongoDB\Server\<version>\bin\mongod.cfg。编辑该文件启用身份验证。

  1. 打开配置文件

    使用文本编辑器(如Notepad或Notepad++)打开配置文件:

    cmd 复制代码
    notepad "C:\Program Files\MongoDB\Server\<version>\bin\mongod.cfg"
  2. 启用身份验证

    security部分添加authorization:

    yaml 复制代码
    security:
      authorization: enabled

3. 重启MongoDB服务

使更改生效,重启MongoDB服务:

cmd 复制代码
net stop MongoDB
net start MongoDB

4. 验证身份验证配置

  1. 重新启动MongoDB shell并使用身份验证连接

    cmd 复制代码
    mongo -u "admin" -p "secure_password" --authenticationDatabase "admin"
  2. 验证连接

    成功连接后,可以执行一些命令来验证身份验证是否配置正确。

在macOS上

1. 创建管理员用户

确保MongoDB实例在没有身份验证的情况下运行。

  1. 启动MongoDB shell

    bash 复制代码
    mongo
  2. 切换到admin数据库

    javascript 复制代码
    use admin
  3. 创建管理员用户

    javascript 复制代码
    db.createUser({
      user: "admin",
      pwd: "secure_password", // 请使用强密码
      roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
    })

2. 修改配置文件以启用身份验证

MongoDB的默认配置文件通常位于 /usr/local/etc/mongod.conf。编辑该文件启用身份验证。

  1. 打开配置文件

    bash 复制代码
    sudo nano /usr/local/etc/mongod.conf
  2. 启用身份验证

    security部分添加authorization:

    yaml 复制代码
    security:
      authorization: enabled

3. 重启MongoDB服务

使更改生效,重启MongoDB服务:

bash 复制代码
brew services restart mongodb/brew/mongodb-community

4. 验证身份验证配置

  1. 重新启动MongoDB shell并使用身份验证连接

    bash 复制代码
    mongo -u "admin" -p "secure_password" --authenticationDatabase "admin"
  2. 验证连接

    成功连接后,可以执行一些命令来验证身份验证是否配置正确。

使用Node.js连接到启用身份验证的MongoDB

以下是使用Node.js和MongoDB驱动程序连接到启用身份验证的MongoDB实例的示例代码:

  1. 安装MongoDB Node.js驱动

    bash 复制代码
    npm install mongodb
  2. 连接到启用身份验证的MongoDB并执行操作

    javascript 复制代码
    const { MongoClient } = require('mongodb');
    
    async function main() {
        const uri = "mongodb://admin:secure_password@localhost:27017/admin";
        const client = new MongoClient(uri, { useUnifiedTopology: true });
    
        try {
            await client.connect();
            console.log("Connected to MongoDB with authentication");
    
            const db = client.db('exampledb');
            const collection = db.collection('examplecoll');
    
            // 插入数据
            const insertResult = await collection.insertOne({ name: "Alice", age: 30 });
            console.log('Insert Result:', insertResult);
    
            // 查询数据
            const findResult = await collection.findOne({ name: "Alice" });
            console.log('Find Result:', findResult);
    
        } finally {
            await client.close();
        }
    }
    
    main().catch(console.error);

总结

启用MongoDB身份验证的步骤如下:

  1. 创建管理员用户:在没有身份验证的情况下启动MongoDB,并通过MongoDB shell创建一个管理员用户。
  2. 修改配置文件:在MongoDB配置文件中启用身份验证。
  3. 重启MongoDB服务:使配置更改生效,重启MongoDB服务。
  4. 验证身份验证配置:使用管理员用户验证MongoDB是否正确启用了身份验证。

通过以上步骤和代码示例,你可以在不同操作系统上启用并验证MongoDB的身份验证,确保数据库的安全性。

相关推荐
星辰徐哥8 小时前
Spring Boot 微服务架构设计与实现
spring boot·后端·微服务
星辰徐哥8 小时前
Spring Boot 数据导入导出与报表生成
spring boot·后端·ui
明夜之约8 小时前
Spring Boot 自动装配源码
java·spring boot·后端
Leaton Lee8 小时前
Spring Boot分层架构详解:从Controller到Service再到Mapper的完整流程
java·spring boot·后端·架构
Micro麦可乐8 小时前
Spring Boot 实战:从零设计一个短链系统(含完整代码与数据库设计)
数据库·spring boot·后端·哈希算法·雪花算法·短链系统
Jinkxs8 小时前
Resilience4j- 与 Spring Boot 快速集成:自动配置与基础注解使用
java·spring boot·后端
毕设源码_郑学姐8 小时前
计算机毕业设计springboot网络相册设计与实现 基于Spring Boot框架的在线相册管理系统开发与应用 Spring Boot驱动的网络影集设计与实践
spring boot·后端·课程设计
辣机小司8 小时前
【踩坑记录:Spring Boot 配置文件读取值不一致?警惕 YAML 的“八进制陷阱”与 SnakeYAML 版本之谜】
java·spring boot·后端·yaml·踩坑记录
码农阿豪8 小时前
从零到一:Spring Boot快速接入金仓数据库实战
数据库·spring boot·后端
追逐时光者8 小时前
一个基于 .NET 与 Avalonia 构建、面向 TrinityCore 的开源 WoW 数据库编辑器
后端·.net