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 项目的业务功能

相关推荐
这个DBA有点耶35 分钟前
多模数据库深度解读:从“多库拼装”到“一库多能”的架构演进
数据库·mysql·dba
程序员夏洛1 小时前
MySQL 默认的事务隔离级别是什么?为什么选择这个级别?
数据库·mysql
艺术留白1 小时前
MokaTest使用篇-SQL接口
数据库·sql
( •̀∀•́ )9202 小时前
MySQL 自动备份与恢复方案
数据库·mysql·oracle
这个DBA有点耶2 小时前
大事务的“事前预防”:监控、拦截、Kill,四层防线一次讲透
数据库·mysql·代码规范
tachibana23 小时前
RAGAS 指标解读
数据库·人工智能·算法·机器学习·架构·大模型·llm
mlidongfeng3 小时前
[AI][昇腾950]TA 学习
数据库·学习
bestsun9993 小时前
rac集群环境下配置JDBC
数据库
java_logo4 小时前
Docker 部署 FalkorDB:轻松搭建属性图数据库与知识图谱平台
数据库·docker·知识图谱·falkordb·轩辕镜像·falkordb部署教程·falkordb部署文档
小白说大模型4 小时前
Spring AI 框架中集成 MCP 的完整指南:从服务端到客户端的全流程实践
大数据·数据库·人工智能·安全·spring·chatgpt·开源