什么是MongoDB ?
MongoDB 是由C++语言编写的,是一个基于`分布式文件存储`的开源`数据库`系统。
在高负载的情况下,添加更多的节点,可以保证服务器性能。
MongoDB 旨在为WEB应用提供可扩展的高性能数据存储解决方案。
MongoDB 将数据存储为一个`文档`,数据结构由键值(`key=>value`)对组成。
MongoDB 文档类似于 `JSON` 对象。字段值可以包含其他`文档`,`数组`及`文档数组`。
一、Docker 部署 mongodb
1,获取镜像
root@ubuntu:~# docker search mongo #搜索镜像
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
mongo MongoDB document databases provide high av... 5985 [OK] # 一般我会选择关注度高的
mongo-express Web-based MongoDB admin interface, written... 470 [OK]
2,构建 mongodb
docker run \
--name mongodb_server \ #容器项目名称
-p 27017:27017 \ #映射的端口,意思是把本机的27017端口映射到容器的27017
-v /data/mongodb/configdb:/data/configdb/ \ #数据目录映射,持久化
-v /data/mongodb/db/:/data/db/ \
-d mongo --auth #后台运行, 开启认证登录
3,查看 mongo 进程
root@ubuntu:/data/mongodb/configdb# docker ps
命令行启动
/usr/bin/mongod --config /etc/mongodb.conf --smallfiles
二、配置 admin 账户信息
1,使用admin
登录mongo
docker exec -it mongodb_server mongo admin
2,创建一个 admin 管理员账号:
db.createUser({ user: 'admin', pwd: '123456', roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] });
=============
exit #成功后退出即可。
3, 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数据库中可用。超级账号,超级权限
三、配置普通用户、数据库
上面我们针对admin账户,进行了配置,创建账户,授权等,下面我们进行普通user的管理;
3.1 创建普通user
root@ubuntu:/data/mongodb/configdb# docker exec -it mongodb_server mongo admin #使用admin登录mongodb
> db.auth("admin","123456"); #对admin进行身份认证
1 #1代表正常 0代表异常
> db.createUser({ user: 'fqhy', pwd: '123456', roles: [ { role: "readWrite", db: "app" } ] });
> exit #退出
bye
3.2 数据库操作(app)
root@ubuntu:/data/mongodb/configdb# docker exec -it mongodb_server mongo admin
> db.auth("fqhy","123456");
1
> use app
switched to db app
> db.test.save({name:"douge"});
WriteResult({ "nInserted" : 1 })
> exit
四、NoSQL Manager 第三方管理工具使用
MongoDB免费软件的NoSQL Manager
我下载的是windows版本
配置好后,链接即可。
插入数据:
之前我们命令行添加过1天,上面又添加1条,所以我们去看看,mongodb中是不是有2条 douge的数据呢??
至此,关于mongodb 的docker快速部署,简单的用户管理,建库建表,插入数据,查询数据,都一起和逗哥完成了,后面我们继续学习,更高深的技能,请任何问题,欢迎留言,谢谢。
- QQ精品交流群
-
- 微信公众号
-