Docker安装MongoDB详解(mongo.latest)

一、MongoDB介绍

MongoDB是一种基于分布式文件存储的数据库,使用C++语言开发,旨在为Web应用提供可扩展且高性能的数据存储解决方案。作为一种介于关系数据库和非关系数据库之间的技术,MongoDB具有强大的功能和高效的性能,特别适用于处理海量的非结构化数据。

MongoDB的核心概念与特性:

  • 数据模型:MongoDB采用文档数据模型,数据以类似JSON的BSON格式存储,支持复杂的数据结构,如内嵌文档和数组,具有高度的灵活性。
  • 查询语言:MongoDB提供类似面向对象的查询语言,支持动态查询,能够实现大多数关系型数据库的单表查询功能,同时支持数据索引以提高查询性能。
  • 分布式存储:MongoDB支持水平扩展,可将数据分布到多个服务器上,保证高可用性和出色的性能。
  • 高可用性与容灾:MongoDB通过复制集和分片机制,确保系统具备高可用性和容灾能力,从而提升了系统的可扩展性。

MongoDB的发展历程与最新进展:

MongoDB由10gen(现为MongoDB Inc.)于2007年开始开发,最初目标是构建一个云平台即服务(PaaS)。2009年,MongoDB作为开源项目正式发布。自那时以来,MongoDB经历了快速发展,新增了如复制集、分片等关键特性,显著提升了可扩展性和高可用性。最近的技术创新包括优化有线协议和引入新的存储引擎,进一步增强了事务支持功能。

MongoDB的应用场景与行业应用:

MongoDB非常适合需要快速迭代和支持多样化数据格式的应用场景。凭借其灵活的数据库模型和出色的性能,MongoDB已被广泛应用于各类企业,满足从初创公司到大型企业的不同数据管理需求。尤其在处理海量非结构化数据的场景中,MongoDB表现出色,成为许多行业的首选数据库解决方案。

二、安装MongoDB

1.拉取MongoDB镜像

docker pull mongo:latest

2.创建挂载目录

(1)进入文件夹

cd /usr/local/docker

注:不必非得是/usr/local/docker这个目录,根据自己的需求和喜好来就行,可自由选择

(2)创建文件和赋权 

# 创建一个名为 mongodb 的主目录
mkdir mongodb# 进入 mongodb 目录,以便后续操作
cd mongodb# 创建一个名为 config 的子目录,用于存放 MongoDB 配置文件
mkdir config# 创建一个名为 data 的子目录,用于存放 MongoDB 数据文件
mkdir data# 创建一个名为 logs 的子目录,用于存放 MongoDB 的日志文件
mkdir logs# 在 config 目录下创建一个名为 mongod.conf 的空文件,这是 MongoDB 的配置文件
touch config/mongod.conf# 将 /usr/local/docker/mongodb 目录的权限设置为 777,允许任何用户对该目录进行读、写和执行操作
chmod 777 /usr/local/docker/mongodb

 

(3)编写配置文件

使用 vi 或 vim 编辑器打开mongod.conf文件

vim mongod.conf

如果使用FinalShell工具,可以直接双击文件打开

添加内容

# 数据库存储路径
dbpath=/usr/local/docker/mongodb/data
# 日志文件路径
logpath=/usr/local/docker/mongodb/logs/mongod.log
# 监听的端口
port=27017
# 允许所有的 IP 地址连接
bind_ip=0.0.0.0
# 启用日志记录
journal=true
# 是否后台运行
fork=true
# 启用身份验证
#auth=true

3.启动MongoDB容器

docker run -dit --name mongo \
-p 17017:27017 \
-v /usr/local/docker/mongodb/config/mongod.conf:/etc/mongod.conf \
-v /usr/local/docker/mongodb/data:/data/db \
-v /usr/local/docker/mongodb/logs:/var/log/mongodb \
-e MONGO_INITDB_ROOT_USERNAME=admin \
-e MONGO_INITDB_ROOT_PASSWORD=123456 \
--restart=always  \
mongo

 

解释:

docker run:

用于创建并启动一个新的 Docker 容器。

-dit:

-d:让容器在后台运行(detached mode),即以守护进程方式运行容器。

-i:保持标准输入流打开,通常与 -t 一起使用。

-t:为容器分配一个伪终端,便于交互。

--name mongo:

为启动的容器指定一个名称,这里容器名为 mongo。

-p 17017:27017:

将主机的 17017 端口映射到容器的 27017 端口,这样主机通过 17017 端口可以访问到容器内 MongoDB 服务的 27017 端口。MongoDB 默认的端口是 27017。

-v /usr/local/docker/mongodb/config/mongod.conf:/etc/mongod.conf:

将主机的配置文件 /usr/local/docker/mongodb/config/mongod.conf 挂载到容器的 /etc/mongod.conf 位置,使容器使用主机上的配置文件来启动 MongoDB 服务。

-v /usr/local/docker/mongodb/data:/data/db:

将主机的 /usr/local/docker/mongodb/data 目录挂载到容器的 /data/db,用作 MongoDB 的数据存储位置。这样可以确保数据在容器重启时持久化。

-v /usr/local/docker/mongodb/logs:/var/log/mongodb:

将主机的 /usr/local/docker/mongodb/logs 目录挂载到容器的 /var/log/mongodb 位置,用于保存 MongoDB 的日志文件。这样日志数据不会随着容器销毁而丢失。

-e MONGO_INITDB_ROOT_USERNAME=admin:

设置 MongoDB 初始化时的 root 用户名为 admin。此用户名将在数据库首次启动时用于身份验证。

-e MONGO_INITDB_ROOT_PASSWORD=123456:

设置 MongoDB 初始化时的 root 用户密码为 123456。用于数据库身份验证。

--restart=always:

确保容器在停止或崩溃后总是自动重启。如果 Docker 服务重启或容器出现故障,容器将会自动重新启动。

mongo:

指定使用 mongo 官方镜像来启动容器。该镜像包含了最新的 MongoDB 服务。

总结:

此命令启动了一个 MongoDB 容器,并通过设置配置文件、数据目录、日志目录和初始化的用户名及密码,确保 MongoDB 在启动时以指定配置运行,同时数据和日志会持久化在主机的指定目录中。通过端口映射,MongoDB 服务可以通过主机的端口访问,容器的重启策略则确保了服务的高可用性。

4.查看是否启动

三、创建用户数据

1.进入MongoDB容器

docker exec -it mongo /usr/bin/mongosh

 2.切换到 admin 库

use admin

3.执行数据库登录操作,否则后面执行命令会提示

MongoServerError[Unauthorized]: Command createUser requires authentication

# 使用创建容器时的用户名和密码db.auth("admin","123456")

 4.登录成功后,创建新用户(用户名和密码可以自定义)

db.createUser({user: "用户名称",           // 新用户的用户名pwd: "密码",              // 新用户的密码roles: [                 // 为该用户分配的角色权限{ role: "root",        // 角色是 "root",这是 MongoDB 中的一个内置角色,拥有数据库的完全管理权限db: "admin"          // 该角色是在 "admin" 数据库上授予的,这意味着该用户具有对整个 MongoDB 实例的管理权限}]}
);

示例

db.createUser({user:"testuser",pwd:"123456",roles:[{role:"root",db:"admin"}]}
);

5.创建完成后,尝试使用上面创建的新用户信息进行连接

db.auth('testuser','123456')

登录成功也是显示如下

四、关于用户的常用命令

1.更新用户角色,修改用户权限,不会覆盖原权限信息,只新增权限

db.updateUser("admin",{roles:[{role:"readWrite",db:"admin"}]})

2.更新用户密码

db.changeUserPassword("admin","123456")

3.删除用户

db.dropUser({'admin'})

4.查看所有用户

show users

五、使用Navicat连接MongoDB

1.打开 Navicat 新建数据库连接,选择MongoDB

2.填写配置信息

3.填写完成配置信息后,点击左下角“测试连接”按钮

提示连接成功,此时,在点击右下角“保存”按钮,即可保存连接配置,这样就可以通过Navicat去访问MongoDB数据库了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/465015.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

金箍棒变化-第15届蓝桥杯国赛Scratch初/中级组真题第1题

[导读]:超平老师的《Scratch蓝桥杯真题解析100讲》已经全部完成,后续会不定期解读蓝桥杯真题,这是Scratch蓝桥杯真题解析第193讲。 如果想持续关注Scratch蓝桥真题解读,可以点击《Scratch蓝桥杯历年真题》并订阅合集,…

简单的 docker 部署ELK

简单的 docker 部署ELK 这是我的运维同事部署ELK的文档,我这里记录转载一下 服务规划 架构: Filebeat->kafka->logstash->ES kafka集群部署参照: kafka集群部署 部署服务程序路径/数据目录端口配置文件elasticsearch/data/elasticsearch9200/data/elas…

Unity XR Interaction Toolkit 开发教程(3)快速配置交互:移动、抓取、UI交互【3.0以上版本】

获取完整课程以及答疑,工程文件下载: https://www.spatialxr.tech/ 视频试看链接: 3.快速配置交互:移动、抓取、UI交互【Unity XR Interaction Toolkit 跨平台开发教程】(3.0以上版本) 系列教程专栏&…

深度体验SCNet超算平台:SCNet「AI跃升季」·谁是下一个“AI”跃人?

平时做大模型训练的时候总是苦于没有服务器资源来做微调实验,于是这次深度体验了一下SCNet超算平台。 SCNet超算平台是一个超算互联网计算服务平台,有着更大更全更专业的超级算力。显卡从异构加速卡到A800都有。 本次我尝试了大模型的推理和微调。 第一…

求助帖【如何学习核磁共振的原理】

最近提前进组了 我完全不懂磁共振的相关知识 想问问各位大佬有没有推荐的学习路线 或者是学习资料、论坛都可以的(我做的方向是磁共振成像技术) 老师给了一本书,但是有点看不懂,全英文的 叫Principles Of Magnetic Resonance …

MySQL查询where中包含多个in条件问题

示例: select * from x_table where a in (1,2,3) and b in (4,8) 上面这种查询方法,如果可以通过a和b唯一确定一条数据,但a和b列可以有相同值时,会造成查询数据不准确。 验证: 假设有以下数据(手机号为…

HiveSQL 中判断字段是否包含某个值的方法

HiveSQL 中判断字段是否包含某个值的方法 在 HiveSQL 中,有时我们需要判断一个字段是否包含某个特定的值。下面将介绍几种常用的方法来实现这个功能。 一、创建示例表并插入数据 首先,我们创建一个名为employee的表,并插入一些示例数据&am…

python-读写Excel:openpyxl-(4)下拉选项设置

使用openpyxl库的DataValidation对象方法可添加下拉选择列表。 DataValidation参数说明: type: 数据类型("whole", "decimal", "list", "date", "time", "textLength", "custom"…

求平面连接线段组成的所有最小闭合区间

这个功能确实非常实用,我在过去开发地面分区编辑器时就曾应用过这一算法。最近,在新产品的开发中再次遇到了类似的需求。尽管之前已经实现过,但由于长时间未接触,对算法的具体细节有所遗忘,导致重新编写时耗费了不少时…

springboot - 定时任务

定时任务是企业级应用中的常见操作 定时任务是企业级开发中必不可少的组成部分,诸如长周期业务数据的计算,例如年度报表,诸如系统脏数据的处理,再比如系统性能监控报告,还有抢购类活动的商品上架,这些都离不…

ES管理工具Cerebro 0.8.5 Windows版本安装及启动

前言: Cerebro 的下载地址 https://github.com/lmenezes/cerebro/releases Cerebro 默认监听IP 0.0.0.0 ,默认端口9000,访问地址:http://localhost:9000 启动 cmd命令到安装目录下:cerebro-0.8.5\bin 执行命令 ce…

Flutter 正在切换成 Monorepo 和支持 workspaces

其实关于 Monorepo 和 workspaces 相关内容在之前《Dart 3.5 发布,全新 Dart Roadmap Update》 和 《Flutter 之 ftcon24usa 大会,创始人分享 Flutter 十年发展史》 就有简单提到过,而目前来说刚好看到 flaux 这个新进展,所以就再…

[论文][环境]3DGS+Colmap环境搭建_WSL2_Ubuntu22.04 - 副本

0. 前言 仅使用Ubuntu进行场景编译,场景渲染查看则使用Windows下官方提供的编译好的预编译包打开即可,非常方便(要注意即使是预编译版本,Windows端也应该安装VS和CUDA Toolkit,要注意的是,最新的SIBR预编译…

json-server的使用(根据json数据一键生成接口)

一.使用目的 在前端开发初期,后端 API 可能还未完成,json-server 可以快速创建模拟的 RESTful API,帮助前端开发者进行开发和测试。 二.安装 npm install json-server //局部安装npm i json-server -g //全局安装 三.使用教程 1.准备一…

导入和部署自定义 LLM 大模型

本文以【Qwen2-7B-Instruct】模型为例,指导如何将自定义大模型导入到 TI 平台,并使用平台内置推理镜像部署大模型对话推理服务。 前置要求 申请 CFS 本文所涉及到的操作需要通过 CFS 存储模型文件,详情请查看创建文件系统及挂载点。 操作…

开源办公软件 ONLYOFFICE 深入探索

文章目录 引言1. ONLYOFFICE 创建的背景1. 1 ONLYOFFICE 项目启动1. 2 ONLYOFFICE 的发展历程 2. 核心功能介绍2. 1 桌面编辑器2. 1. 1 文档2. 1. 2 表格2. 1. 3 幻灯片 2. 2 协作空间2. 3 文档编辑器 - 本地部署版 3. 技术介绍4. 安装5. 优势与挑战6. 个人体验7. 强大但不止于…

HTTP慢速攻击原理及解决办法

目录 引言 HTTP慢速攻击原理 解决办法 Nginx Tomcat 华宇TAS IIS 结论 引言 HTTP慢速攻击(Slow HTTP Attack)是一种拒绝服务攻击(DoS),攻击者通过故意缓慢地发送HTTP请求来耗尽服务器资源,导致合法…

[mysql]修改表和课后练习

目录 DDL数据定义语言 添加一个字段 添加一个字段到最后一个 添加到表中的第一个一个字段 选择其中一个位置: 修改一个字段:数据类型,长度,默认值(略) 重命名一个字段 删除一个字段 重命名表 删除表 清空表 DCL中事务相关内容 DCL中COMMIT和ROLLBACK的讲解 对比TR…

SpringBoot+ClickHouse集成

前面已经完成ClickHouse的搭建&#xff0c;创建账号&#xff0c;创建数据库&#xff0c;保存数据库等&#xff0c;接下来就是在SpringBoot项目中集成ClickHouse。 一&#xff0c;引入依赖 <!-- SpringBoot集成ClickHouse --> <dependency><groupId>com.baom…

搜维尔科技:【煤矿虚拟仿真】煤矿企业、高校、科研单位-多语言支持、数字孪生、交互式学习体验

品牌&#xff1a;SouVR 发票&#xff1a;支持专票、普票 单位&#xff1a;套 版本号&#xff1a;1.0 包装清单&#xff1a;软件1套 软件形式&#xff1a;U盘、光盘 运行环境&#xff1a;windows 应用对象&#xff1a;煤矿企业、高校、科研单位 系统配置&#xff1a;…