Docker搭建MonggoDB环境

😊 @ 作者: 一恍过去
🎊 @ 社区: Java技术栈交流
🎉 @ 主题: Docker搭建MonggoDB环境

在这里插入图片描述

前言

MongoDB是一种开源的文档型(NoSQL)数据库管理系统,它使用文档模型来存储数据。作为一个面向文档的数据库,MongoDB的数据以类似于JSON的BSON(二进制JSON)格式进行存储,这使得它非常适合处理半结构化数据。

MongoDB的特点如下:

  • 文档数据库: MongoDB以文档为基本单位存储数据。每个文档是一个键值对(字段和值)的集合,类似于关系型数据库中的行。文档可以是动态的,字段不需要事先定义,这使得数据模型更灵活。
  • 面向集合: 文档被组织在集合(Collection)中,类似于关系型数据库中的表。集合是一组相关文档的容器,每个文档可以具有不同的结构,没有强制的模式定义。
  • 灵活的数据模型: MongoDB的灵活数据模型允许您在同一个集合中存储不同结构的文档,这对于存储半结构化数据非常有用。您可以根据需求动态调整文档的结构,而无需修改数据库架构。
  • 高性能和可扩展性: MongoDB具有高性能和可扩展性的特点。它支持水平扩展,可以通过添加更多的服务器来增加数据存储和处理能力。此外,MongoDB还具有内置的复制和分片功能,用于提供数据冗余和负载均衡。
  • 丰富的查询语言: MongoDB提供了强大的查询语言,支持丰富的查询操作,包括范围查询、正则表达式匹配、聚合查询等。它还支持全文搜索和地理空间查询,使得在复杂数据集中进行高级查询变得更加方便。
  • 多种数据存储引擎: MongoDB支持多种数据存储引擎,包括WiredTiger、MMAPv1等。这些存储引擎提供了不同的性能和功能特点,可以根据具体的使用场景选择合适的存储引擎

前言

在安装MonggoDB前,需要知道与SpringBoot整合时的最佳匹配版本,根据SpringBoot版本下载对应的MonggoDB版本。
参考:《SpringBoot与MongoDB版本对照参考》

1、拉取镜像

docker pull mongo:4.4.12

2、创建挂载目录

mkdir -p /home/docker/mongodb/single/data
mkdir -p /home/docker/mongodb/single/log
mkdir -p /home/docker/mongodb/single/conf

3、创建配置文件

创建配置文件:

vim /home/docker/mongodb/single/conf/mongodb.conf

内容:

#端口
port=27017
#数据库文件存放目录
dbpath=/home/docker/mongodb/single/data
#日志文件存放路径
logpath=/home/docker/mongodb/single/log
#使用追加方式写日志
logappend=true
#以守护线程的方式运行,创建服务器进程
fork=true
#最大同时连接数
maxConns=100
#不启用验证
#noauth=true
#每次写入会记录一条操作日志
journal=true
#存储引擎有mmapv1、wiredTiger、mongorocks
storageEngine=wiredTiger
#访问IP
bind_ip=0.0.0.0
#用户验证
auth=true

4、启动

docker run -d -p 27017:27017 \
-v /home/docker/mongodb/single/data:/data/db \
-v /home/docker/mongodb/single/conf:/data/conf \
-v /home/docker/mongodb/single/log:/data/log \
--name mongodb mongo:4.4.12

5、创建用户

进入容器:

docker exec -it mongodb mongo admin

操作命令:

#创建管理员用户
db.createUser({user:"root",pwd:"123456",roles:["root","readWrite"]});

#创建普通用户-读写权限,readWrite:读写,read:只读,库管理员:userAdminAnyDatabase
db.createUser({user:"test",pwd:"123456",roles:["readWrite"]})

#查看用户
show users

#验证用户密码,返回1,则表示成功
db.auth("root","123456")

#修改用户密码
db.updateUser("root",{pwd:"new_pwd"})

#删除用户
db.dropUser("root")

#为非admin数据库,设置用户,role为对应角色,db为所属数据库
db.createUser({user: "test", pwd: "123456", roles: [{ role: "readWrite", db: "test" }]})

6、重启

docker restart mongodb

7、roles列表

roles 如下:

数据库用户角色(Database User Roles)

  • read : 授权User只读数据的权限,允许用户读取指定的数据库
  • readWrite 授权User读/写数据的权限,允许用户读/写指定的数据库

数据库管理角色(Database Admininstration Roles)

  • dbAdmin:在当前的数据库中执行管理操作,如索引的创建、删除、统计、查看等
  • dbOwner:在当前的数据库中执行任意操作,增、删、改、查等
  • userAdmin :在当前的数据库中管理User**,**创建、删除和管理用户。

备份和还原角色(Backup and Restoration Roles)

  • backup
  • restore

跨库角色(All-Database Roles)

  • readAnyDatabase:授权在所有的数据库上读取数据的权限,只在admin 中可用
  • readWriteAnyDatabase:授权在所有的数据库上读写数据的权限,只在admin 中可用
  • userAdminAnyDatabase:授权在所有的数据库上管理User的权限,只在admin中可用
  • dbAdminAnyDatabase: 授权管理所有数据库的权限,只在admin 中可用

集群管理角色(Cluster Administration Roles)

  • clusterAdmin:授权管理集群的最高权限,只在admin中可用
  • clusterManager:授权管理和监控集群的权限
  • clusterMonoitor:授权监控集群的权限,对监控工具具有readonly的权限
  • hostManager:管理server

超级角色(super master Roles)

  • root :超级账户和权限,只在admin中可用

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一恍过去

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值