MongoDB是什么?
MongoDB是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统,在高负载情况下,添加更多节点,可以保证服务器性能。
MongoDB旨在为WEB应用提供可扩展的高性能数据存储解决方案。
MongoDB将数据存储为文档,数据结构由键值(key=>value)对组成。
MongoDB文档类似于‘JSON’对象。字段值可以包含你其他文档、数组及文档数组。
DOCKER部署MongoDB
-
获取对象
$ docker search mongo #查询镜像 NAME DESCRIPTION STARS OFFICIAL AUTOMATED mongo MongoDB document databases provide high avai… 6480 [OK] mongo-express Web-based MongoDB admin interface, written w… 587 [OK] $ docker pull mongo #拉取镜像
-
MongoDB配置文件
在/data/mongodb/configdb/目录下新建文件 mongodb.conf
# mongodb.conf logappend=true # bind_ip=127.0.0.1 port=27017 fork=true noprealloc=true auth=true
-
构建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 # 后台运行,开启认证登录
-
查看MongoDB进程
$ docker ps
配置admin账户信息
-
使用admin登录MongoDB
$ docker exec -it mongodb_server mongo admin
-
创建一个admin管理员账号
db.createUser({user:'admin',pwd:'123456',roles:[{role:'userAdminAnyDatabase', db:'admin'}]} , { w: "majority" , wtimeout: 5000 })
[图片上传失败...(image-ce15a8-1578558493575)]
-
MongoDB 用户权限
内建的角色
- 数据库用户角色: read、readWrite
- 数据库管理角色: dbAdmin、dbOwner、userAdmin
- 集群管理角色: clusterAdmin、clusterManager、clusterMonitor、hostManger
- 备份恢复角色:backup、restore
- 所有数据库角色: readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
- 超级管理员角色:root
- 内部角色:__system
角色说明
- read:允许用户读取指定数据库
- readWrite:允许用户读写指定数据库
- dbAdmin: 允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile
- userAdmin:允许用户向system.users集合写入,可以在指定数据库中创建、删除和管理用户
- clusterAdmin:只在admin数据库中可用,赋予用户所有分片和复制集相关函数的权限
- readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限
- readWriteAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读写权限
- userAdminAnyDatabase:只在admin数据库可用,赋予用户所有数据库的userAdmin权限
- dbAdminAnyDatabase:只在admin数据库可用,赋予用户所有数据库的dbAdmin权限
- root:只在admin数据库中可用,超级账号,超级权限