当前位置: 首页 > article >正文

Mongodb 启用认证

MongoDB 启用认证的完整指南

启用 MongoDB 的认证功能需要按照以下步骤进行设置:

检查 MongoDB 配置文件

在 MongoDB 配置文件中(通常为 mongod.conf),需要启用认证功能。

修改配置文件

打开 mongod.conf 文件,找到或添加以下内容:

systemLog:
  destination: file
  path: /your_path/mongo.log
  logAppend: true
storage:
  dbPath: /your_path/mongodb
net:
  bindIp: *********, ::1
  ipv6: true
security:
  authorization: enabled
  • 如果是 Homebrew 安装的 MongoDB,配置文件路径通常为 /opt/homebrew/etc/mongod.conf。
  • 如果是手动安装的 MongoDB,请确保路径正确,或者创建自己的配置文件。

重启 MongoDB 服务

修改完配置文件后,重启 MongoDB 服务:

mongod --config /your_path/mongod.conf
mongod --config /opt/homebrew/etc/mongod.conf

或者:

brew services restart mongodb-community@<version>

启动 MongoDB(无认证模式)

如果数据库未启用用户认证,可以先以无认证模式启动 MongoDB,创建管理员用户。

启动命令:

mongod --config /your_path/mongod.conf

创建管理员用户

进入 MongoDB Shell,连接数据库:

mongosh "mongodb://127.0.0.1:27017"

切换到 admin 数据库:

use admin

创建管理员用户:

db.createUser({
  user: "admin",
  pwd: "your_password", // 设置强密码
  roles: [ 
    { role: "userAdminAnyDatabase", db: "admin" },
    { role: "readWriteAnyDatabase", db: "admin" },
    { role: "clusterAdmin", db: "admin" }
    ]
})
  • userAdminAnyDatabase
    • 允许该用户在所有数据库上管理用户。
  • readWriteAnyDatabase
    • 跨数据库的读写权限:用户可以对 所有非系统数据库 执行 read(读取)和 write(写入)操作,包括插入、更新、删除和查询文档。
    • 不能操作 admin 数据库的配置或管理数据:虽然用户可以访问 admin 数据库(因为它是默认管理数据库),但无法修改数据库的配置或用户管理数据(需要更高权限,如 userAdminAnyDatabase 或 dbAdminAnyDatabase)。
  • clusterAdmin
    • 允许关闭数据库等管理操作。
  • 建议将密码设置为复杂密码以保证安全性。

验证管理员用户

退出 MongoDB Shell,然后以认证模式重启 MongoDB:

mongod --config /your_path/mongod.conf

使用管理员用户连接 MongoDB:

mongosh -u admin -p your_password --authenticationDatabase admin

成功登录后,验证管理员用户权限:

use admin
db.getUsers()

创建普通用户

如果需要对特定数据库的访问权限进行限制,可以创建普通用户。

切换到目标数据库:

use your_database_name

创建普通用户:

db.createUser({
  user: "user_name",
  pwd: "user_password",
  roles: [ { role: "readWrite", db: "your_database_name" } ]
})
  • readWrite 角色允许该用户对指定数据库进行读写操作。

启动认证并测试

确保 mongod.conf 中已启用认证(即 authorization: enabled)。

使用普通用户登录:

mongosh -u user_name -p user_password --authenticationDatabase your_database_name

测试权限:

db.collection_name.find() // 测试读取权限
db.collection_name.insert({ key: "value" }) // 测试写入权限

注意事项

  1. 数据备份:在启用认证前,请确保所有重要数据已备份。
  2. 权限分配:为不同的用户分配最小权限,以减少安全风险。
  3. 密码管理:妥善管理用户密码,定期更新以防泄露。

优雅的关闭 MongoDB 服务

db.adminCommand({ shutdown: 1 })

验证是否已经关闭:

// 使用 ps 查看进程:
ps aux | grep mongod
// 使用 mongosh 连接:
mongosh

http://www.kler.cn/a/443195.html

相关文章:

  • [大模型]本地离线运行openwebui+ollama容器化部署
  • 详解Sonar与Jenkins 的集成使用!
  • tdengine数据库使用java连接
  • arcgis的合并、相交、融合、裁剪、联合、标识操作的区别和使用
  • 用python 进行雷电接口检测
  • 【第01阶段-基础必备篇-第二部分--Python之基础】04 函数
  • 图变换器的再思考:谱注意力网络
  • Oracle Database 21c Express Edition数据库 和 Sqlplus客户端安装配置
  • Unity类银河战士恶魔城学习总结(P178 Archer s arrow 弓箭手的箭)
  • 从Windows到Linux:跨平台数据库备份与还原
  • 利用Java爬虫获得京东JD商品SKU信息
  • 论文学习—VAE
  • 皮肤伤口分割数据集labelme格式248张5类别
  • 修改uniapp下拉刷新圆圈颜色
  • Unity UI SafeArea适配
  • vue-element-admin npm install 安装失败,tui-editor更名导致
  • API接口性能优化:提升电商数据处理速度的关键
  • 错误处理中间件 VS 异常过滤器 net Core
  • 深入解析ENAS中的共享权重机制
  • pyparsing restOfLine
  • 基于xss-lab的绕过
  • 华纳云:如何实现tomcat自动化部署?
  • 【Yonghong 企业日常问题03】如何在Linux系统上部署Yonghong DM-Engine v2.3.1(一键安装指南版)
  • 随手记:小程序使用uni.createVideoContext视频无法触发播放
  • Excel+VBA+FFmpeg全能图片处理利器:批量选择、调整尺寸、压缩质量、图片合并,水平垂直合并一键搞定!
  • 【C++】sophus 计算机视觉和机器人技术中的二维和三维李群 (一)