• Docker 安装 MongoDB


    一、什么是MongoDB

            MongoDB 是一个基于分布式文件存储的数据库。是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。

    二、MongoDB的安装

    这里使用docker来安装MongoD

    1.docker 拉取mysql镜像

    docker pull mongo:latest

    2.运行容器

    创建外部挂载的文件并进行授权

    1. mkdir -p /mydata/mongo/config
    2. mkdir -p /mydata/mongo/data
    3. mkdir -p /mydata/mongo/logs
    4. touch /mydata/mongo/config/mongod.conf
    5. chmod 777 /mydata/mongo

    然后,使用编辑器打开mongod.conf文件,并添加以下内容:

    1. # 数据库存储路径
    2. dbpath=/mydata/mongo/data
    3. # 日志文件路径
    4. logpath=/mydata/mongo/logs/mongod.log
    5. # 监听的端口
    6. port=27017
    7. # 允许所有的 IP 地址连接
    8. bind_ip=0.0.0.0
    9. # 启用日志记录
    10. journal=true
    11. # 是否后台运行
    12. fork=true
    13. # 启用身份验证
    14. #auth=true

     这个配置文件包含了MongoDB的存储路径、日志路径、监听IP和端口等配置项。可以根据自己的需求进行修改。

    运行MongoDB容器

    1. docker run -dit --name mongo \
    2. -p 27017:27017 \
    3. -v /mydata/mongo/config/mongod.conf:/etc/mongod.conf \
    4. -v /mydata/mongo/data:/data/db \
    5. -v /mydata/mongo/logs:/var/log/mongodb \
    6. -e MONGO_INITDB_ROOT_USERNAME=admin \
    7. -e MONGO_INITDB_ROOT_PASSWORD=123456 \
    8. --restart=always \
    9. mongo

    参数说明

    -i:表示运行容器
    -t:表示容器启动后进入其命令行
    -d:守护式方式创建容器在后台运行
    -name:容器名称

     -p 27017:27017     端口映射    前面是外部访问端口:后面内部开发的端口,mongoDB默认是27017端口

     -v /mydata/mongo/data:/data/db  给容器内部的数据文件指向mongodbdata ,即删除了容器,容器数据也不会丢失,下次创建容器继续挂载到/mydata/mongo/data即可看到删除容器之前的数据
    -e MONGO_INITDB_ROOT_USERNAME=admin

    -e MONGO_INITDB_ROOT_PASSWORD=123456  指定容器内的环境变量 初始化容器账号、密码
    --restart=always   容器挂掉后自动重启

    注意:如果是云服务器,记得开启对应的端口,添加对应的安全组相关策略。 

    3. 创建用户并设置密码

    进入容器内部

    1. docker exec -it mongo /bin/mongosh
    2. //
    3. docker exec -it mongodb bash
    4. //登录容器
    5. mongo admin -u admin -p 123456 -u 后面的是创建容器指定的账号 -p 后面跟的是创建容器指定的密码

    说明:
    如果MongoDB6.0及以上使用:
    docker exec -it mongo /bin/mongosh
    如果是6.0以下的版本使用:
    docker exec -it mongo /bin/mongo 

    三、创建MongoDB用户 

    1.mongo中各个角色对应的权限

    权限说明
    read允许用户读取指定数据库
    readWrite允许用户读写指定数据库
    dbAdmin允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile
    userAdmin允许用户向system.users集合写入,可以在指定数据库里创建、删除和管理用户
    clusterAdmin只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限
    readAnyDatabase只在admin数据库中可用,赋予用户所有数据库的读权限
    readWriteAnyDatabase只在admin数据库中可用,赋予用户所有数据库的读写权限
    userAdminAnyDatabase只在admin数据库中可用,赋予用户所有数据库的userAdmin权限
    dbAdminAnyDatabase只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限
    root只在admin数据库中可用。超级账号,超级权限

    2.创建一个用户,赋予用户root权限 

    注意:在createUser之前先use admin切换一下

     然后执行创建用户命令

    1. db.createUser(
    2. {
    3. user:"root",
    4. pwd:"123456",
    5. roles:[{role:"root",db:"admin"}]
    6. }
    7. );
    8. //尝试使用上面创建的用户信息进行连接。
    9. db.auth('root', '123456');

     返回 { ok:1} 则说明创建成功。

    其他相关命令

    1. //更新用户角色,修改用户权限,不会覆盖原权限信息,只新增权限:
    2. db.updateUser("admin",{roles:[{role:"readWrite",db:"admin"}]})
    3. //更新用户密码
    4. db.changeUserPassword("admin","123456")
    5. //删除用户
    6. db.dropUser({'admin'})
    7. //查看所有用户
    8. show users
    9. //查看数据库(非admin数据库的用户不能使用数据库命令)
    10. show dbs

    四、连接 MongoDB

    使用Navicat 连接mongoDB,建议用16版本的,低版本可能没有连接mongoDB的选项

    连接成功后,打开如下

  • 相关阅读:
    Visual Studio 2022 启用CodeLens - 程序抬头显示(查看字段、方法、类的引用)
    测试架构师如何落地性能测试方案(二)
    2022年7月小结
    PPTC Benchmark: Evaluating Large Language Models for PowerPoint Task Completion
    【JY】YJK前处理参数详解及常见问题分析:刚度系数(三)
    xss跨站脚本攻击
    2023年【G1工业锅炉司炉】报名考试及G1工业锅炉司炉理论考试
    前后端分离项目,vue+uni-app+php+mysql订座预约系统(H5移动项目) 开题报告
    MySQL中WHERE后跟着N多个OR条件会怎样。。。
    iTOP-3A5000开发板,龙芯处理器,规格参数
  • 原文地址:https://blog.csdn.net/li_wen_jin/article/details/133639954