Mongodb 启用认证

MongoDB 启用认证的完整指南

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

检查 MongoDB 配置文件

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

修改配置文件

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

yaml 复制代码
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 服务:

yaml 复制代码
mongod --config /your_path/mongod.conf
mongod --config /opt/homebrew/etc/mongod.conf

或者:

yaml 复制代码
brew services restart mongodb-community@<version>

启动 MongoDB(无认证模式)

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

启动命令:

yaml 复制代码
mongod --config /your_path/mongod.conf

创建管理员用户

进入 MongoDB Shell,连接数据库:

yaml 复制代码
mongosh "mongodb://127.0.0.1:27017"

切换到 admin 数据库:

yaml 复制代码
use admin

创建管理员用户:

yaml 复制代码
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:

yaml 复制代码
mongod --config /your_path/mongod.conf

使用管理员用户连接 MongoDB:

yaml 复制代码
mongosh -u admin -p your_password --authenticationDatabase admin

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

yaml 复制代码
use admin
db.getUsers()

创建普通用户

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

切换到目标数据库:

yaml 复制代码
use your_database_name

创建普通用户:

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

启动认证并测试

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

使用普通用户登录:

yaml 复制代码
mongosh -u user_name -p user_password --authenticationDatabase your_database_name

测试权限:

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

注意事项

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

优雅的关闭 MongoDB 服务

yaml 复制代码
db.adminCommand({ shutdown: 1 })

验证是否已经关闭:

yaml 复制代码
// 使用 ps 查看进程:
ps aux | grep mongod
// 使用 mongosh 连接:
mongosh
相关推荐
{⌐■_■}2 小时前
【c++】自定义命名空间namespace与头文件的组织与企业应用案例
服务器·数据库·c++
minstbe2 小时前
半导体数据分析(二):徒手玩转STDF格式文件 -- 码农切入半导体系列
前端·javascript·数据库
KawYang2 小时前
xxl-job 整合 Seatunnel 实现定时任务
linux·服务器·数据库
qq_2518364573 小时前
asp.net多媒体教室管理系统VS开发sqlserver数据库web结构c#编程计算机网页项目
数据库·c#·asp.net
计算机毕设定制辅导-无忧学长3 小时前
MySQL 实战:小型项目中的数据库应用(二)
数据库·mysql
鱼大大博客3 小时前
Edge Scdn用起来怎么样?
数据库
夜间看海3 小时前
52 基于单片机的超声波、温湿度、光照检测分阶段报警
数据库·单片机·mongodb
The_SkyUzi3 小时前
安装与配置MongoDB 6.0以支持远程连接
数据库·mongodb
菜菜江江3 小时前
运行 Mongodb Server
数据库·经验分享·学习·mongodb