MongoDB设置密码并使用MongoDB Compass连接

一、安装MongoDB Compass,了解内置角色

MongoDB 安装成功后,默认是没有密码的,需要手动创建用户并设置。

MongoDB Compass 是 MongoDB 官方推出的图形化工具,可以在官网根据自己系统,下载安装:

MongoDB 提供了一系列内置角色,用于权限管理:

| 角色 | 权限描述 |

数据库用户角色
read 允许读取指定数据库的所有集合数据(查询、列表索引等)。
readWrite 允许读写指定数据库的所有集合数据(增删改查文档、创建索引等)。
dbAdmin 允许执行数据库管理操作(创建/删除索引、统计信息、数据压缩等), 但不能管理用户
userAdmin 允许管理当前数据库的用户和角色(创建、删除、授权)。
dbOwner 最高权限 :包含 readWritedbAdminuserAdmin 的所有权限。
数据库管理角色
readAnyDatabase 允许读取所有数据库的数据(类似 read,但作用于所有库)。
readWriteAnyDatabase 允许读写所有数据库的数据(类似 readWrite,但作用于所有库)。
userAdminAnyDatabase 允许管理所有数据库的用户和角色(类似 userAdmin,但作用于所有库)。
dbAdminAnyDatabase 允许管理所有数据库的元数据(类似 dbAdmin,但作用于所有库)。
clusterMonitor 允许监控集群状态(查询诊断命令、查看分片/副本集状态等)。
clusterManager 允许管理集群配置(添加分片、修改副本集配置、迁移数据等)。
clusterAdmin 最高权限 :包含 clusterMonitorclusterManagerhostManager 的所有权限。
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 项目的业务功能

相关推荐
林抒1 小时前
(2025版)MongoDB 8.0.13 版本安装与配置(Windows 版)保姆级教程
windows·mongodb·nosql数据库
云边有个稻草人1 小时前
不用公网 IP 也能远程管 MongoDB?本地部署 + cpolar实用方案
网络协议·mongodb·cpolar
i***27951 小时前
Oracle分页sql
数据库·sql·oracle
i***17181 小时前
mysql如何发现慢查询sql
数据库·sql·mysql
阿宁又菜又爱玩1 小时前
MySQL基础学习
数据库·学习·mysql
3***89191 小时前
sql实战解析-sum()over(partition by xx order by xx)
数据库·sql
Data_agent1 小时前
1688获得1688公司档案信息API,python请求示例
开发语言·数据库·python
q***01771 小时前
Spring.factories
java·数据库·spring
u***B7921 小时前
Navicat for MySQL下载安装教程
数据库·mysql