一、安装MongoDB Compass,了解内置角色
MongoDB 安装成功后,默认是没有密码的,需要手动创建用户并设置。
MongoDB Compass 是 MongoDB 官方推出的图形化工具,可以在官网根据自己系统,下载安装:

MongoDB 提供了一系列内置角色,用于权限管理:
| 角色 | 权限描述 |
| 数据库用户角色 | |
|---|---|
read |
允许读取指定数据库的所有集合数据(查询、列表索引等)。 |
readWrite |
允许读写指定数据库的所有集合数据(增删改查文档、创建索引等)。 |
dbAdmin |
允许执行数据库管理操作(创建/删除索引、统计信息、数据压缩等), 但不能管理用户。 |
userAdmin |
允许管理当前数据库的用户和角色(创建、删除、授权)。 |
dbOwner |
最高权限 :包含 readWrite、dbAdmin 和 userAdmin 的所有权限。 |
| 数据库管理角色 | |
readAnyDatabase |
允许读取所有数据库的数据(类似 read,但作用于所有库)。 |
readWriteAnyDatabase |
允许读写所有数据库的数据(类似 readWrite,但作用于所有库)。 |
userAdminAnyDatabase |
允许管理所有数据库的用户和角色(类似 userAdmin,但作用于所有库)。 |
dbAdminAnyDatabase |
允许管理所有数据库的元数据(类似 dbAdmin,但作用于所有库)。 |
clusterMonitor |
允许监控集群状态(查询诊断命令、查看分片/副本集状态等)。 |
clusterManager |
允许管理集群配置(添加分片、修改副本集配置、迁移数据等)。 |
clusterAdmin |
最高权限 :包含 clusterMonitor、clusterManager 和 hostManager 的所有权限。 |
hostManager |
允许管理服务器的启停、日志轮转等主机级操作。 |
backup |
允许执行数据库备份(如 mongodump)。 |
restore |
允许执行数据库恢复(如 mongorestore),需配合 backup 角色使用。 |
root |
最高权限:拥有所有数据库和集群的管理权限,等同于 dbOwnerAnyDatabase + userAdminAnyDatabase + clusterAdmin。 |
__system |
MongoDB 内部保留角色,仅用于系统级操作(不建议手动分配)。 |
enableSharding |
允许对数据库启用分片功能。 |
restrict |
禁止用户执行任何操作(用于临时禁用账户)。 |
二、创建用户
打开 MongoDB Compass,先通过无认证的方式连接本机的 MongoDB:

MongoDB 自带三个默认的数据库,分别是 admin, config, local,我们接下来要操作 admin 数据库:
首先进入 MongoDB shell,输入 use admin,切换到 admin 数据库:
bash
use admin
然后创建一个超级管理员用户:
bash
db.createUser({
user: "adminUser",
pwd: "strongPassword123", // 设置安全的密码
roles: [{ role: "root", db: "admin" }]
})
一定要先创建一个root权限的管理员,避免后续出现问题。
创建完成后,输入 show collections 查看 admin 数据库有哪些集合:

输入 db.system.users.find().pretty() 可以查看创建的用户:

三、修改配置文件,重启MongoDB
找到 MongoDB 的配置文件 mongod.conf,向文件中添加:
bash
security:
authorization: enabled
保存配置文件,重启 MongoDB。
打开 MongoDB Compass,展开 Advanced Connection Options ,点击 Authentication,输入用户名和密码,重新连接:

Authentication Database 这里要填 admin,因为认证信息在 admin 数据库里面。
四、配置SpringBoot的yml文件
yml 配置文件如下,需要增加 username, password, authentication-database三个配置项
bash
spring:
data:
mongodb:
port: 27017
host: localhost
database: Data
username: adminUser #MongoDB用户名
password: strongPassword123 #MongoDB密码
authentication-database: admin #MongoDB验证数据库
五、添加其他用户
再次进入 MongoDB shell,输入 use admin,添加一个权限为 readWriteAnyDatabase 的用户
bash
db.createUser({
user: "localUser",
pwd: "strongPassword123",
roles: [{ role: "readWriteAnyDatabase", db: "admin" }]
})
像上面一样修改 SpringBoot 的 yml 配置即可,实测这个权限不影响 SpringBoot 项目的业务功能