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

简介: 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模式重启即可;

具体过程:略

相关文章
|
9月前
|
应用服务中间件 网络安全 nginx
手把手教你使用 Docker 部署 Nginx 教程
本文详解Nginx核心功能与Docker部署优势,涵盖镜像拉取、容器化部署(快速、挂载、Compose)、HTTPS配置及常见问题处理,助力高效搭建稳定Web服务。
3965 4
|
10月前
|
JavaScript 算法 前端开发
【Docker项目实战】使用Docker部署paopao-ce微社区
【Docker项目实战】使用Docker部署paopao-ce微社区
685 84
【Docker项目实战】使用Docker部署paopao-ce微社区
|
10月前
|
存储 Docker Python
docker 部署 sftp
本文介绍SFTP服务的部署与配置,包括users.conf用户配置规则、Docker容器运行命令及上传目录权限说明,重点解析atmoz/sftp镜像的chroot机制与子目录映射,确保用户登录后正确访问/upload目录,并提供Python脚本实现文件上传示例。
820 12
docker 部署 sftp
|
9月前
|
应用服务中间件 Linux nginx
在虚拟机Docker环境下部署Nginx的步骤。
以上就是在Docker环境下部署Nginx的步骤。需要注意,Docker和Nginix都有很多高级用法和细节需要掌握,以上只是一个基础入门级别的教程。如果你想要更深入地学习和使用它们,请参考官方文档或者其他专业书籍。
413 5
|
10月前
|
运维 Linux 数据库
基于 Docker 部署 n8n 指南,新手一看就会
本教程详解如何通过 Docker 快速部署开源自动化工具 n8n,适合新手快速上手。内容涵盖官方部署步骤、常见难点及第三方一键部署方案,助你高效搭建自动化工作流平台。
2310 6
|
9月前
|
存储 NoSQL Redis
手把手教你用 Docker 部署 Redis
Redis是高性能内存数据库,支持多种数据结构,适用于缓存、消息队列等场景。本文介绍如何通过Docker快速拉取轩辕镜像并部署Redis,涵盖快速启动、持久化存储及docker-compose配置,助力开发者高效搭建稳定服务。
2734 8
|
9月前
|
存储 搜索推荐 数据库
🚀 RAGFlow Docker 部署全流程教程
RAGFlow是开源的下一代RAG系统,融合向量数据库与大模型,支持全文检索、插件化引擎切换,适用于企业知识库、智能客服等场景。支持Docker一键部署,提供轻量与完整版本,助力高效搭建私有化AI问答平台。
7981 8
|
9月前
|
存储 关系型数据库 MySQL
MySQL Docker 容器化部署全指南
MySQL是一款开源关系型数据库,广泛用于Web及企业应用。Docker容器化部署可解决环境不一致、依赖冲突问题,实现高效、隔离、轻量的MySQL服务运行,支持数据持久化与快速迁移,适用于开发、测试及生产环境。
1188 4
|
10月前
|
前端开发 JavaScript 应用服务中间件
在Docker部署的前端应用中使用动态环境变量
以上步骤展示了如何在 Docker 配置过程中处理并注入环墨遁形成可执行操作流程,并确保最终用户能够无缝地与之交互而无须关心背后复杂性。
513 13