用Docker安装一个MongoDB

MongoDB介绍:

一个数据库可以理解成一个文件夹,一张表就是一个collection集合,表内的一行数据就是一个document文档,表中的每一个字段在mongo中被称为一个field域,mongodb只支持单表查询

在mysql中一行数据就是一个订单,在mongodb中一个字典(object)就是一个订单

Mongo支持的角色:

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

 Docker安装MongoDB:

#拉取镜像
[root@db01 ~]#docker pull mongo:4.2.6
#创建一个需要密码登录的mongodb容器
[root@db01 ~]#docker run -d --name mongod -p 27017:27017 mongo:4.2.6 --auth
#查看容器的启动时间
[root@db01 ~]#docker container ls
#查看日志是否启动完毕
[root@db01 ~]#docker logs mongod -f
#进入容器
[root@db01 ~]#docker exec -it mongod /bin/bash
#进入数据库
root@6533ac116da1:/# mongo
MongoDB shell version v4.2.6
connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("54789f2f-f3f1-41a6-80d8-99a8d554ef4a") }
MongoDB server version: 4.2.6
Welcome to the MongoDB shell.
For interactive help, type "help".
For more comprehensive documentation, see
    http://docs.mongodb.org/
Questions? Try the support group
    http://groups.google.com/group/mongodb-user

创建admin管理用户

连上数据库后,我们先创建一个admin用户,用以管理其它用户:

1

2

3

4

5

6

7

8

9

10

11

12

13

> 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"

        }

    ]

}

>

 创建具有读写权限的用户

根据业务需求,创建不用的用户,如下面创建拥有读写权限的用户user:

1

2

3

4

5

6

7

8

9

10

11

12

13

> 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"

        }

    ]

}

>

 认证用户并操作

1

2

3

4

5

6

7

8

9

10

> 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

官网

简易版的下载地址:Robo 3T下载-Robo 3T(MongoDB数据库可视化管理助手) V1.3.1官方中文版下载-Win7系统之家

创建连接:

用Docker安装一个MongoDB_第1张图片

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

用Docker安装一个MongoDB_第2张图片

操作界面:

用Docker安装一个MongoDB_第3张图片

4.2 IDEA Mongo Plugin

GitHub官网

这个是支持JetBrains全系列软件的插件,IDEA当然也可以安装。

连接设置:

注意下面的User Database是该用户下的数据库,写错了会连不上。

用Docker安装一个MongoDB_第4张图片

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

用Docker安装一个MongoDB_第5张图片

操作界面:

用Docker安装一个MongoDB_第6张图片

总结

本文介绍了通过Docker安装最新版的MongoDB,并通过例子演示了如何运行和创建用户与集合,最后还介绍了两款非常友好的可视化工具,希望能带没有接触过的人入个门吧。

你可能感兴趣的:(MongoDB,mongodb,数据库,docker)