通过docker安装mongodb
前言
这个系列是对我学习docker的一个总结,先从各种服务的搭建开始,直接带大家实战入门。其实docker本身是运维技能,后端同学只需要了解即可。我这个系列也不会对docker太过深入,点到为止。
这个系列暂时完结,常用软件就以mongodb收官。
什么是mongodb
很多学习能力强可以跳过次章。
先从mongodb和mysql的区别开始把,mongodb称作NoSQL(Not Only SQL )数据库,也叫非关系型数据库,和传统的mysql这样的关系型数据库最大的区别就是,数据结构!简单理解就是nosql中存储的都是json文档,而非表格(想深入学习的还请自行百度)。优势是增查非常快,json结构全文检索也非常方便。通常用来存储大量的,不会变动的内容,比如日志(有兴趣的同学可以学习一下kafka+elk)和聊天记录等。
拉取镜像
不多介绍,直奔主题:
注意这里搜索的是mongo,不是mongodb。
这边我们不需要配置,也不想把data持久化到自己宿主服务器上。所以跳过挂载,有需要的可以自己挂载。
命令:
docker run --name mymongo -d -p 27017:27017 mongo --auth
–auth开启权限。如果你不想设置密码可以不需要。其余不解释。
设定角色权限
到这一步其实都是mongodb的知识了,大部分都是需要进入mongodb来,直接操作数据库了,类似mysql。
进入容器内部,并进入mongodb的admin数据库
docker exec -it mymongo mongo admin
创建root用户,赋予userAdminAnyDatabase角色(角色详情在下一节),设置密码为123,在admin数据库中。
db.createUser({ user: 'root', pwd: '123', roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] });
用root账户登陆:
db.auth("root","123");
新建/切换数据库:
use test_db
创建readWrite角色的用户test,密码为123,只能操作test_db数据库。
db.createUser({ user: 'test', pwd: '123', roles: [ { role: "readWrite", db: "test_db" } ] });
连接mongodb
下载Robo 3T,进行如下操作,就可以以test用户,操作test_db库
如何操作mongodb
这边不多介绍,可以参考菜鸟教学。
附录角色表
内建的角色
数据库用户角色:read、readWrite;
数据库管理角色:dbAdmin、dbOwner、userAdmin;
集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;
备份恢复角色:backup、restore;
所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
超级用户角色:root // 这里还有几个角色间接或直接提供了系统超级用户的访问(dbOwner 、userAdmin、userAdminAnyDatabase)
内部角色:__system
角色说明:
Read:允许用户读取指定数据库
readWrite:允许用户读写指定数据库
dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile
userAdmin:允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户
clusterAdmin:只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。
readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限
readWriteAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读写权限
userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限
dbAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。
注意
root:只在admin数据库中可用。超级账号,超级权限