• 容器化:MongoDB


    1 缘起

    开启容器化之路。

    2 容器化MongDB

    在这里插入图片描述

    2.1 查看镜像

    docker search mongodb
    
    • 1

    在这里插入图片描述

    2.2 安装

    • 前台安装
    sudo docker run  \
    --name mongodb \
    -p 27017:27017  \
    -v /home/xindaqi/mongodb/conf:/data/configdb \
    -v /home/xindaqi/data/mongodb-data:/data/db \
    -v /home/xindaqi/mongodb/logs:/data/log \
    mongo --auth
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 守护进程安装
    sudo docker run  \
    --name mongodb \
    -p 27017:27017  \
    -v /home/xindaqi/mongodb/conf:/data/configdb \
    -v /home/xindaqi/data/mongodb-data:/data/db \
    -v /home/xindaqi/mongodb/logs:/data/log \
    -d mongo --auth
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • Docker重启后自动重启MongoDB
    sudo docker run  \
    --name mongodb \
    --restart always \
    -p 27017:27017  \
    -v /home/xindaqi/mongodb/conf:/data/configdb \
    -v /home/xindaqi/data/mongodb-data:/data/db \
    -v /home/xindaqi/mongodb/logs:/data/log \
    -d mongo --auth
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    3 用户操作

    3.1 登录

    docker exec -it container_id mongosh admin
    
    • 1

    MongoDB版本:6.0.6
    Mongsh版本:1.9.0
    在这里插入图片描述

    3.2 创建用户

    MongoDB默认没有用户,
    需要手动创建用户。

    db.createUser({ user: 'admin', pwd: 'admin123456', roles: [ { role: "root", db: "admin" } ] });
    
    • 1

    在这里插入图片描述

    3.3 验证用户

    db.auth("admin", "admin123456");
    
    • 1

    在这里插入图片描述

    4 客户端

    NoSQLBooster For MongoDB
    传送门:https://www.mongobooster.com/downloads

    4.1 手动创建连接

    在这里插入图片描述

    4.2 基础配置

    在这里插入图片描述

    4.3 用户名密码

    在这里插入图片描述

    在这里插入图片描述

    4.4 连接状态

    在这里插入图片描述

    在这里插入图片描述

    5 CURD

    5.1 用户角色

    序号角色描述
    1read提供读取所有非系统的集合(数据库)
    2readWrite提供读写所有非系统的集合(数据库)和读取所有角色的所有权限
    3dbAdmin提供执行管理任务的功能,例如与架构相关的任务,索引编制,收集统计信息。此角色不授予用户和角色管理权限。
    4dbOwner提供对数据库执行任何管理操作的功能。此角色组合了readWrite,dbAdmin和userAdmin角色授予的权限。
    5userAdmin提供在当前数据库上创建和修改角色和用户的功能。由于userAdmin角色允许用户向任何用户(包括他们自己)授予任何权限,因此该角色还间接提供对数据库的超级用户访问权限,或者,如果作用于管理数据库,则提供对群集的访问权限。
    6clusterAdmin提供最佳的集群管理访问。此角色组合了clusterManager,clusterMonitor和hostManager角色授予的权限。此外,该角色还提供了dropDatabase操作。
    7readAnyDatabase仅在admin 数据库中使用,提供所有数据库的读权限。
    8readWriteAnyDatabase仅在admin 数据库中使用,提供所有数据库的读写权限
    9userAdminAnyDatabase仅在admin 数据库中使用,提供与userAdmin相同的用户管理操作访问权限,允许用户向任何用户(包括他们自己)授予任何权限,因此该角色还间接提供超级用户访问权限。
    10dbAdminAnyDatabase仅在admin 数据库中使用,提供与dbAdmin相同的数据库管理操作访问权限,该角色还在整个群集上提供listDatabases操作。
    11root仅在admin 数据库中使用,提供超级权限

    5.2 查看数据库

    show dbs
    
    • 1

    在这里插入图片描述

    5.3 创建数据库

    格式:

    use database_name
    
    • 1

    数据库不存在:创建数据库
    数据库存在:切换到该数据库

    use tutorial
    
    • 1

    创建数据库后,会自动切换到数据库,当数据库中没有数据时,查看数据库,并不会在列表中展示。
    在这里插入图片描述

    5.4 为数据库添加用户

    db.createUser({ user: 'tutorial', pwd: 'admin123456', roles: [ { role: "dbOwner", db: "tutorial" } ] });
    
    • 1

    在这里插入图片描述

    6 FAQ

    6.1 无法使用mongo登录

    在这里插入图片描述

    xindaqi@xindaqi:~/mongodb$ docker exec -it ece80fb0f658 mongo admin
    OCI runtime exec failed: exec failed: unable to start container process: exec: “mongo”: executable file not found in $PATH: unknown

    MongoDB5.0以后,使用mongosh登录。
    官方:https://github.com/docker-library/mongo/issues/558

    docker exec -it ece80fb0f658 mongosh admin
    
    • 1

    在这里插入图片描述

  • 相关阅读:
    银行智能运维探索:打造通用指标趋势预测模型
    java必做实验3
    开源MyBatisGenerator组件源码分析
    Go基础语法:变量和常量
    求平均查找长度(成功+失败)
    黑白照片修复彩色软件免费有哪些?分享这三个实用的软件给你
    Dubbo的设计理念原来就藏在这三张图中,读完恍然大悟了
    Docker基础用法
    Java&C++题解与拓展——leetcode513.找树最下角的值【么的新知识】
    【leetcode】98. 验证二叉搜索树
  • 原文地址:https://blog.csdn.net/Xin_101/article/details/130902224