前言
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中可用