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

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
简介: 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 数据库
本课程主要讲解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
相关文章
|
5天前
|
监控 Java 应用服务中间件
tomcat相关概念与部署tomcat多实例-zabbix监控(docker部署)
通过上述步骤,您可以在Ubuntu系统上成功编译并安装OpenCV 4.8。这种方法不仅使您能够定制OpenCV的功能,还可以优化性能以满足特定需求。确保按照每一步进行操作,以避免常见的编译问题。
36 23
|
6天前
|
监控 Java 应用服务中间件
tomcat相关概念与部署tomcat多实例-zabbix监控(docker部署)
通过上述步骤,您可以在Ubuntu系统上成功编译并安装OpenCV 4.8。这种方法不仅使您能够定制OpenCV的功能,还可以优化性能以满足特定需求。确保按照每一步进行操作,以避免常见的编译问题。
37 22
|
9天前
|
监控 Java 应用服务中间件
tomcat相关概念与部署tomcat多实例-zabbix监控(docker部署)
通过上述步骤,您可以在Ubuntu系统上成功编译并安装OpenCV 4.8。这种方法不仅使您能够定制OpenCV的功能,还可以优化性能以满足特定需求。确保按照每一步进行操作,以避免常见的编译问题。
49 25
|
21天前
|
Ubuntu Linux 开发工具
docker 是什么?docker初认识之如何部署docker-优雅草后续将会把产品发布部署至docker容器中-因此会出相关系列文章-优雅草央千澈
Docker 是一个开源的容器化平台,允许开发者将应用程序及其依赖项打包成标准化单元(容器),确保在任何支持 Docker 的操作系统上一致运行。容器共享主机内核,提供轻量级、高效的执行环境。本文介绍如何在 Ubuntu 上安装 Docker,并通过简单步骤验证安装成功。后续文章将探讨使用 Docker 部署开源项目。优雅草央千澈 源、安装 Docker 包、验证安装 - 适用场景:开发、测试、生产环境 通过以上步骤,您可以在 Ubuntu 系统上成功安装并运行 Docker,为后续的应用部署打下基础。
docker 是什么?docker初认识之如何部署docker-优雅草后续将会把产品发布部署至docker容器中-因此会出相关系列文章-优雅草央千澈
|
10天前
|
SQL 关系型数据库 MySQL
docker-compose部署mysql8
使用docker-compose容器化部署mysql8
|
1月前
|
Java 应用服务中间件 Docker
将基于 Spring 的 WAR 应用程序部署到 Docker:详尽指南
将基于 Spring 的 WAR 应用程序部署到 Docker:详尽指南
44 2
|
2月前
|
Java Linux Docker
什么是 Docker?如何将 Spring Boot 应用程序部署到 Docker?
什么是 Docker?如何将 Spring Boot 应用程序部署到 Docker?
66 3
|
2月前
|
NoSQL 容灾 MongoDB
MongoDB主备副本集方案:两台服务器使用非对称部署的方式实现高可用与容灾备份
在资源受限的情况下,为了实现MongoDB的高可用性,本文探讨了两种在两台服务器上部署MongoDB的方案。方案一是通过主备身份轮换,即一台服务器作为主节点,另一台同时部署备节点和仲裁节点;方案二是利用`priority`设置实现自动主备切换。两者相比,方案二自动化程度更高,适合追求快速故障恢复的场景,而方案一则提供了更多的手动控制选项。文章最后对比了这两种方案与标准三节点副本集的优缺点,指出三节点方案在高可用性和数据一致性方面表现更佳。
143 5
|
2月前
|
机器学习/深度学习 数据采集 Docker
Docker容器化实战:构建并部署一个简单的Web应用
Docker容器化实战:构建并部署一个简单的Web应用
|
2月前
|
持续交付 开发者 Docker
掌握Docker容器化技术,加速软件开发与部署
掌握Docker容器化技术,加速软件开发与部署
67 0