【MongoDB】用Docker安装一个MongoDB最新版玩玩
1 安装
本文假设大家已经安装好了docker并能正常使用,所以不讲解如何安装docker了。用docker安装MongoDB最新版本如下:
# 从repository查找mongo的相关镜像,结果很多,其中第一条为官方的镜像
$ docker search mongo
# 下载官方镜像的最新版本
$ docker pull mongo:latest
# 完成后,检查是否下载成功
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos 7 5e35e350aded 12 days ago 203MB
mongo latest 965553e202a4 3 weeks ago 363MB
hello-world latest fce289e99eb9 10 months ago 1.84kB
仅需要简单几个命令,我们就拥有了MongoDB的最新镜像了,后续就可以使用了。
2 启动
完成MongoDB的镜像下载后,启动就非常简单了,一个命令即可:
$ docker run -itd --name mongo -p 27017:27017 mongo --auth
305ebd8236678905d16dd76e75dcf99fdd812be6b13c240acece7985d29b316c
(1)--name后面的参数为docker容器名;
(2)-p后面是端口映射,即宿主端口:容器端口;
(3)--auth是否开始鉴权,如果不想开启可以去掉;
成功启动MongoDB一个实例后,会返回容器ID,如305ebd8236678905d16dd76e75dcf99fdd812be6b13c240acece7985d29b316c。
通过命令docker ps可以查看正在运行的容器,经过检查,确实已经起来了。
注意:默认数据是存在容器系统的/data/db目录下的,如果需要使用自定义的宿主机器目录,可以在启动命令加上参数:
-v /my/own/datadir:/data/db
3 创建用户与集合
3.1 进入容器
容器起来后,下一步是进入容器:
# 进入容器可以用以下两种方法
# 分别是通过容器名和容器ID
$ docker exec -it mongo bash
$ docker exec -it 305ebd823667 bash
上面进入容器后,其实是进入了容器的系统,并打开bash。
3.2 通过客户端命令连接数据库
接着通过mongo命令连接到MongoDB的数据库服务。
# 默认连接本地的27017端口的MongoDB
$ mongo
# 指定IP与端口进行连接
$ mongo 127.0.0.1:27017
# 指定用户名和密码连接到指定的MongoDB数据库
$ mongo 127.0.0.1:27017/admin -u user -p password
连接数据库成功后,会返回一些信息,如SeesionID和版本号等。
3.3 查看版本
(1)在linux命令通过mongo --version查询;
(2)连接上数据库后,通过db.version()查询。
root@305ebd823667:/# mongo --version
MongoDB shell version v4.2.1
git version: edf6d45851c0b9ee15548f0f847df141764a317e
OpenSSL version: OpenSSL 1.1.1 11 Sep 2018
root@305ebd823667:/# mongo
> db.version()
4.2.1
3.4 创建admin管理用户
连上数据库后,我们先创建一个admin用户,用以管理其它用户:
> use admin
switched to db admin
> db.createUser({ user:'admin',pwd:'123456',roles:[ { role:'userAdminAnyDatabase', db: 'admin'}]});
Successfully added user: {
"user" : "admin",
"roles" : [
{
"role" : "userAdminAnyDatabase",
"db" : "admin"
}
]
}
>
3.5 创建具有读写权限的用户
根据业务需求,创建不用的用户,如下面创建拥有读写权限的用户user:
> db.auth('admin','123456');
1
> db.createUser({ user:'user',pwd:'123456',roles:[ { role:'readWrite', db: 'testdb'}]});
Successfully added user: {
"user" : "user",
"roles" : [
{
"role" : "readWrite",
"db" : "testdb"
}
]
}
>
3.6 认证用户并操作
> db.auth('user','123456')
1
> use testdb
switched to db testdb
>
> db.person.insert({name:'Larry',age:18})
WriteResult({ "nInserted" : 1 })
> db.person.find({})
{ "_id" : ObjectId("5ddaa14edbbac3c4f844366c"), "name" : "Larry", "age" : 18 }
>
4 两款优秀的可视化工具
通过前面的操作,我们已经建立了用户,并尝试创建了数据库和集合。但通过命令行来操作总是不那么方便,我们需要可视化软件来进行操作。下面将介绍两款优秀的可视化软件,展示如何连接。如何进行CRUD等操作就不一一介绍了,还是比较友好的,容易使用。
4.1 Robo3T
创建连接:

注意下面填的是鉴权数据库,而不是用户的数据库:

操作界面:

4.2 IDEA Mongo Plugin
这个是支持JetBrains全系列软件的插件,IDEA当然也可以安装。
连接设置:
注意下面的User Database是该用户下的数据库,写错了会连不上。

注意下面Auth Database为鉴权的数据库,默认为admin。

操作界面:

总结
本文介绍了通过Docker安装最新版的MongoDB,并通过例子演示了如何运行和创建用户与集合,最后还介绍了两款非常友好的可视化工具,希望能带没有接触过的人入个门吧。
欢迎关注公众号<南瓜慢说>,将持续为你更新...

多读书,多分享;多写作,多整理。
【MongoDB】用Docker安装一个MongoDB最新版玩玩的更多相关文章
- 手把手教你用Docker部署一个MongoDB集群
MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中最像关系数据库的.支持类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引 ...
- docker安装配置mongodb
1 执行 docker search mongo 命令: 2 运行mongo docker run --name mongo -v /mnt/mongodb:/data/db -p 27017:270 ...
- Docker安装配置MongoDB并使用Robo 3T在局域网连接
主要参考了这位老兄的文章(传送门),写的还是比较详细的. 不废话直接来正经的. 1.docker pull mongo 从docker hub拉取最新的mongo镜像文件,300多M大小. 2.doc ...
- Springboot整合MongoDB的Docker开发,其它应用也类似
1 前言 Docker是容器开发的事实标准,而Springboot是Java微服务常用框架,二者必然是会走到一起的.本文将讲解如何开发Springboot项目,把它做成Docker镜像,并运行起来. ...
- docker 安装MongoDB以及设置用户
MongoDB 是一个免费的开源跨平台面向文档的 NoSQL 数据库程序. 1.查看可用的 MongoDB 版本 访问 MongoDB 镜像库地址: https://hub.docker.com/_/ ...
- windows下安装mongodb以及node.js连接mongodb
一.MongoDB 下载 下载地址 https://www.mongodb.com/download-center#community 选择windows版下载,然后安装. 二.安装完毕后创建数据 ...
- Docker下搭建mongodb副本集
背景 有需求需要对mongodb做一个容灾备份.根据官网,发现mongodb最新版本(4.0)已经抛弃了主从模式而采用副本集进行容灾.副本集的优势在于:"有自动故障转移和恢复特性,其任意节点 ...
- MongoDB的介绍安装与基本使用
MongoDB的介绍安装 关于MongoDB的介绍于安装可参考:https://www.cnblogs.com/DragonFire/p/9135630.html 除了官网下载,可以下载他人下载好分享 ...
- docker安装mongodb并备份
安装 官方镜像地址: https://hub.docker.com/_/mongo?tab=description 可以查看对应的dockerfile, 通过观察docker-entrypoint.s ...
随机推荐
- docker2-容器的使用
[root@ipha-dev71- chenjl]# docker [root@ipha-dev71- chenjl]# docker pull training/webapp [root@ipha- ...
- 魏永明: MiniGUI的涅槃重生之路
本文系转载,著作权归作者所有. 商业转载请联系作者获得授权,非商业转载请注明出处. 作者: 魏永明 来源: 微信公众号linux阅码场(id: linuxdev) 本文背景 MiniGUI是最负盛名的 ...
- idea的tomcat实现热部署遇到的问题
选择Deployment的时候,要选择exploded结尾的,否则不支持热部署
- JVM学习记录2--垃圾回收算法
首先要明确,垃圾回收管理jvm的堆内存,方法区是堆内存的一部分,所以也是. 而本地方法栈,虚拟机栈,程序计数器随着线程开始而产生,线程的结束而消亡,是不需要垃圾回收的. 1. 判断对象是否可以被回收 ...
- day07整理(内置方法\循环判断)
目录 一.上节课回顾 (一)if判断 1.单分支结构 2.双分支结构 3.多分支结构 (二)for循环 1.for + break 2.for + continue 3.for循环嵌套 (三)robu ...
- Apache2的安装
Apache2的安装 1.执行:sudo apt-get install apache2. 2.sudo vim /etc/apache2/apache2.conf在最后加上:ServerName l ...
- OptimalSolution(3)--链表问题(2)进阶
一.环形单链表的约瑟夫问题 二.判断一个链表是否为回文结构 三.将单向链表按某只划分成左边小.中间相等.右边大的形式 四.复制含有随机指针节点的链表 五.两个单链表相交的一系列问题 六.将单链表的每K ...
- ES6---变量解构赋值
1.数组的解构赋值 1.1 基本用法 解构赋值:在ES6中 ,按照一定模式从数组和对象中提取值,然后对变量进行赋值,这被称为解构赋值.本质:这种写法属于“模式匹配”,只要等号两边的模式相同,左边的变量 ...
- Xbim.GLTF源码解析(四):轻量化处理
原创作者:flowell,转载请标明出处:https://www.cnblogs.com/flowell/p/10839433.html 在IFC标准中,由IfcRepresentationMap支持 ...
- 一分钟带你了解JWT认证!
目录 一.JWT简介 二.JWT认证和session认证的区别 三.JWT认证流程 四.JWT组成 五.JWT使用场景 一.JWT简介 JSON Web Token(JWT)是一个开放的标准(RFC ...