docker-compose部署MongoDB以及用户管理

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
云数据库 MongoDB,通用型 2核4GB
简介: docker-compose部署MongoDB以及用户管理

使用docker-compose部署MongoDB

安装前准备

# 下载镜像
docker pull mongo:4.4.8-rc0-focal

# 在自己的Linux中新建一个mongo文件夹
mkdir ./mongo

# 创建docker-compose.yml  以及需要挂载的目录
cd ./mongo
touch docker-compose.yml
mkdir -p ./data/db

vi docker-compose.yml

version: '3.6'
services:
  mongo:
    restart: always
    # build: .
    image: mongo:4.4.8-rc0-focal
    container_name: mongo
    ports:
      - 27017:27017
    volumes:
      # 数据目录  挂载出来后,即使删除容器,再用该挂载数据与docker-compose.yml文件启动容器,即可恢复到原来的数据以及用户信息
      - ./data/db:/data/db
      # 自定义数据备份目录,可以定时全量备份数据出来
      - ./mybackup:/mybackup
      - /etc/localtime:/etc/localtime
    environment:
      - TZ=Asia/Shanghai
      # 缓存大小配置为使用 1.5GB , 考虑服务器中还有其他服务需要占用内存,可自定义大小
      - wiredTigerCacheSizeGB=1.5

    # --auth 开启权限认证       --noauth 关闭权限认证,找回密码时使用此配置重启服务
    command: mongod --auth

启动/停止

# 启动
docker-compose up         # 前台运行,退出即停止运行
docker-compose up -d      # 后台运行

# 停止
docker stop mongo

# 删除容器以及网卡    挂载的数据目录还在,重新启动即可恢复
docker-compose down

配置admin数据库的root用户

# 进入容器
docker exec -it mongo bash
# 登陆mongo, 创建root,用户名可自定义,角色使用root
mongo
use admin
db.createUser( {
   
    user: "root", pwd: "123456", roles: [ {
   
    role: "root", db: "admin" } ] } )

# 登陆
db.auth("root", "123456")

# 查看当前数据库的用户
show users

在这里插入图片描述

创建业务数据库、用户

# 如果数据库不存在则自动创建
use im   
# 创建dbOwner的用户,用于项目连接使用
db.createUser( {
   
    user: "imAdmin", pwd: "123456", roles: [ {
   
    role: "dbOwner", db: "im" } ] } )
# 创建read的用户,只有查询数据的权限,可分配给其他同事查看数据
db.createUser( {
   
    user: "imQuery", pwd: "123123", roles: [ {
   
    role: "read", db: "im" } ] } )

show users

连接验证(用户权限是否正常)

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

MongoDB 数据库默认角色说明

官方文档连接

1. 数据库用户角色:read、readWrite
2. 数据库管理角色:dbAdmin、dbOwner、userAdmin
3. 集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager
4. 备份恢复角色:backup、restore
5. 所有数据库角色: readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、
dbAdminAnyDatabase
6. 超级用户角色:root

用户的其他操作

修改用户角色

# 此语句也可以用来修改用户其他信息
db.updateUser("testuser", {
   
   roles:[{
   
   role:"dbOwner", db:"testdb"}]})

修改密码

# 两种方式
db.updateUser('testuser', {
   
   pwd: '123123'}) 
db.changeUserPassword('testuser','123123')

删除用户

# 删除testadmin用户
db.dropUser('testadmin')

root用户,忘记密码怎么办

思路:由 auth 改为 noauth 模式重启,修改用户密码后,再恢复为auth模式重启即可;

具体过程:略

相关实践学习
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。   相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
相关文章
|
9天前
|
消息中间件 编解码 Docker
Docker部署RabbitMQ消息中间件
【7月更文挑战第4天】Docker部署RabbitMQ消息中间件
43 3
|
7天前
|
存储 Java Docker
使用Docker部署Java应用的最佳实践
使用Docker部署Java应用的最佳实践
|
7天前
|
存储 Java Docker
使用Docker部署Java应用的最佳实践
使用Docker部署Java应用的最佳实践
|
7天前
|
存储 移动开发 程序员
Docker部署Dillinger个人文本编辑器
【7月更文挑战第6天】Docker部署Dillinger个人文本编辑器
21 1
|
12天前
|
消息中间件 数据可视化 RocketMQ
【RocketMQ系列二】通过docker部署单机RocketMQ
【RocketMQ系列二】通过docker部署单机RocketMQ
42 4
|
9天前
|
存储 开发者 Docker
|
14天前
|
Nacos 数据中心 Docker
Docker 部署 Nacos 集群
Docker 部署 Nacos 集群
|
5天前
|
Java 应用服务中间件 持续交付
Java面试题:简述Docker等容器化技术的原理及其在Java应用部署中的作用。
Java面试题:简述Docker等容器化技术的原理及其在Java应用部署中的作用。
12 0
|
6天前
|
JSON 测试技术 数据安全/隐私保护
【Docker项目实战篇】Docker部署PDF多功能工具Stirling-PDF
【7月更文挑战第7天】Docker部署PDF多功能工具Stirling-PDF
28 0
|
7天前
|
Ubuntu Linux 数据安全/隐私保护
Linux系统使用Docker部署Cloudreve云盘并实现远程访问
Linux系统使用Docker部署Cloudreve云盘并实现远程访问
15 0