如何正确地使用 Docker 在云服务器上部署 MongoDB v6 数据库并连接

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
简介: 本篇文章将向各位读者介绍使用 Docker 在云服务器上部署 MongoDB v6,并使用免费的 Studio 3T 连接数据库。本文弥补了网上既有方案的一些不足,解决了一些部署中的常见问题,有助于提升部署效率。
本文假设您已经在云服务器中成功安装了 Docker 并下载了 mongo 镜像

1. 创建配置文件

使用 Docker 部署 MongoDB 时,容器默认不会自动生成 mongod.conf 配置文件,需要开发者手动映射云服务器上的配置文件至容器内部,因此,我们需要先创建一份配置文件,您可以任意选择该文件的存储目录,这里我们假设存储路径为 /mongo/mongod.conf

配置文件内容如下:

# 数据库存储路径
dbpath=/var/lib/mongodb

# 日志文件路径
logpath=/var/log/mongodb/mongod.log

# 监听的端口
port=27017

# 允许所有的 IP 地址连接
bind_ip=0.0.0.0

# 启用日志记录
journal=true

# 启用身份验证
auth=true
🚨 注意 bind_ip 的设定非常重要,它使得我们能够远程连接数据库!

2. 创建 MongoDB 容器

使用如下 Docker 命令部署 MongoDB 容器:

docker run --name <your db name> \
  -p <hostport>:27017 \
  -v <config file address>:/etc/mongod.conf \
  -v <dbpath>:/var/lib/mongodb \
  -v <logpath>:/var/log/mongodb/mongod.log \
  -d \
  mongo \
  --auth

请按照您的实际情况替换 <> 内的内容,在这条命令中,从上至下我们制定了:

  1. 容器名;
  2. 云服务器与容器内部的端口映射;
  3. 配置文件映射;
  4. 数据存储路径映射;
  5. 日志路径映射;
  6. 持久化后台运行;
  7. 镜像名称;
  8. 需要身份验证;

3. 创建身份信息

您需要使用 docker exec -it <your db name> mongosh 进入 MongoDB 数据库。

🚨 MongoDB v6 版本不再使用 mongod 命令作为客户端,而使用 mongosh

使用下面的命令创建管理员账户:

use admin
db.createUser({user: "<username>", pwd: "<password>", roles: [{role: "root", db: "admin"}]})

使用管理员账户进行身份验证:

mongo -u <admin> -p <password> --authenticationDatabase admin

创建数据库与普通账号:

use <database_name>
db.createUser({user: "<username>", pwd: "<password>", roles: [{role: "readWrite", db: "<database_name>"}]})

4. 对外开放端口

我们必须开放云服务器端口才能支持远程访问,为此我们需要先查看目前已开放端口(当前为 CentOS):

sudo firewall-cmd --list-all

然后开放目标端口,注意,需使用 --zone=docker 参数:

sudo firewall-cmd --zone=docker --add-port=<the port>/tcp --permanent
💡 默认情况下,CentOS 会使用 firewalld 防火墙来管理网络连接。每个连接/接口都被分配到一个特定的区域,例如 publicprivatedocker 等。每个区域都具有一组默认的防火墙规则,用于控制该区域的网络流量。

最后,如果您使用的是阿里云,您需要登录阿里云控制台,手动在「安全组」一项开启目标端口!

5. 使用 Studio 3T 连接数据库

Studio 3T 是一个免费的 MongoDB GUI,当您下载完成后,您可以通过如下方式访问我们的数据库:

image.png

点击左上角 connect 图标,点击 New Connection 按钮:

image.png

在 URI 中填写 MongoDB URI:mongodb://<username>:<password>@<IP address>:<port>/<database name>

至此,您完成了 MongoDB 的部署,并成功通过 Studio 3T 进行远程连接!

6. 总结

在本篇文章中,我们介绍了如何使用 Docker 部署 v6 版本的 MongoDB 数据库,并使用 Studio 3T 远程连接。目前,很多记述该内容的文章要么不完整,要么不支持 MongoDB v6 版本,这使得部署 MongoDB v6 版本变得不那么轻松,希望我这篇文章能够帮助各位降低部署的难度。如果您在部署的过程中遇到困难,也欢迎您将困难和解决方案附加到评论中,以帮助其他人更方便的操作。

相关实践学习
2分钟自动化部署人生模拟器
本场景将带你借助云效流水线Flow实现人生模拟器小游戏的自动化部署
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情:&nbsp;https://www.aliyun.com/product/ecs
目录
相关文章
|
10天前
|
JavaScript NoSQL Java
基于SpringBoot+Vue实现的大学生就业服务平台设计与实现(系统源码+文档+数据库+部署等)
面向大学生毕业选题、开题、任务书、程序设计开发、论文辅导提供一站式服务。主要服务:程序设计开发、代码修改、成品部署、支持定制、论文辅导,助力毕设!
36 6
|
10天前
|
JavaScript NoSQL Java
基于SpringBoot+Vue的班级综合测评管理系统设计与实现(系统源码+文档+数据库+部署等)
✌免费选题、功能需求设计、任务书、开题报告、中期检查、程序功能实现、论文辅导、论文降重、答辩PPT辅导、会议视频一对一讲解代码等✌
26 4
|
10天前
|
JavaScript NoSQL Java
基于SpringBoot+Vue实现的大学生体质测试管理系统设计与实现(系统源码+文档+数据库+部署)
面向大学生毕业选题、开题、任务书、程序设计开发、论文辅导提供一站式服务。主要服务:程序设计开发、代码修改、成品部署、支持定制、论文辅导,助力毕设!
23 2
|
10天前
|
JavaScript NoSQL Java
基于SpringBoot+Vue实现的冬奥会科普平台设计与实现(系统源码+文档+数据库+部署)
面向大学生毕业选题、开题、任务书、程序设计开发、论文辅导提供一站式服务。主要服务:程序设计开发、代码修改、成品部署、支持定制、论文辅导,助力毕设!
25 0
|
2月前
|
存储 JSON NoSQL
学习 MongoDB:打开强大的数据库技术大门
MongoDB 是一个基于分布式文件存储的文档数据库,由 C++ 编写,旨在为 Web 应用提供可扩展的高性能数据存储解决方案。它与 MySQL 类似,但使用文档结构而非表结构。核心概念包括:数据库(Database)、集合(Collection)、文档(Document)和字段(Field)。MongoDB 使用 BSON 格式存储数据,支持多种数据类型,如字符串、整数、数组等,并通过二进制编码实现高效存储和传输。BSON 文档结构类似 JSON,但更紧凑,适合网络传输。
79 15
|
2月前
|
存储 NoSQL 关系型数据库
阿里云数据库MongoDB版助力信也科技 打造互联网金融企业样板
我们的风控系统引入阿里云数据库MongoDB版后,解决了特征类字段灵活加减的问题,大大提高了开发效率,极大的提升了业务用户体验,获得了非常好的效果
阿里云数据库MongoDB版助力信也科技 打造互联网金融企业样板
|
10天前
|
关系型数据库 MySQL 数据库连接
数据库连接工具连接mysql提示:“Host ‘172.23.0.1‘ is not allowed to connect to this MySQL server“
docker-compose部署mysql8服务后,连接时提示不允许连接问题解决
|
14天前
|
缓存 关系型数据库 MySQL
【深入了解MySQL】优化查询性能与数据库设计的深度总结
本文详细介绍了MySQL查询优化和数据库设计技巧,涵盖基础优化、高级技巧及性能监控。
127 0
|
2月前
|
存储 Oracle 关系型数据库
数据库传奇:MySQL创世之父的两千金My、Maria
《数据库传奇:MySQL创世之父的两千金My、Maria》介绍了MySQL的发展历程及其分支MariaDB。MySQL由Michael Widenius等人于1994年创建,现归Oracle所有,广泛应用于阿里巴巴、腾讯等企业。2009年,Widenius因担心Oracle收购影响MySQL的开源性,创建了MariaDB,提供额外功能和改进。维基百科、Google等已逐步替换为MariaDB,以确保更好的性能和社区支持。掌握MariaDB作为备用方案,对未来发展至关重要。
66 3
|
2月前
|
安全 关系型数据库 MySQL
MySQL崩溃保险箱:探秘Redo/Undo日志确保数据库安全无忧!
《MySQL崩溃保险箱:探秘Redo/Undo日志确保数据库安全无忧!》介绍了MySQL中的三种关键日志:二进制日志(Binary Log)、重做日志(Redo Log)和撤销日志(Undo Log)。这些日志确保了数据库的ACID特性,即原子性、一致性、隔离性和持久性。Redo Log记录数据页的物理修改,保证事务持久性;Undo Log记录事务的逆操作,支持回滚和多版本并发控制(MVCC)。文章还详细对比了InnoDB和MyISAM存储引擎在事务支持、锁定机制、并发性等方面的差异,强调了InnoDB在高并发和事务处理中的优势。通过这些机制,MySQL能够在事务执行、崩溃和恢复过程中保持
94 3