「这是我参与11月更文挑战的第18天,活动详情查看:2021最后一次更文挑战」。
web开发常用到的是缓存机制,提到缓存常见的redis、MongoDB并不可少。今天我们简单了解下mongoDB
Docker 安装 MongoDB
- docker技术已经很成熟了。对我们安装服务来说也很方便了。这里贴出安装步骤
- 拉取mongo最新版本镜像
docker pull mongo:latest
- 启动容器
docker run -itd --name mongo -p 27017:27017 mongo --auth
- 创建用户用于访问(admin)
docker exec -it mymongodb mongo admin
- 至此,mongodb的docker安装已经完成了。下面我们就可以连接了。如果上面启动含有
--auth
表示mongo是区分权限的。在通过可视化工具链接的时候需要验证用户信息才可以操作的。不同用户拥有不同权限。
- 首先我们先为连接进来的admin用户设置密码及权限
db.createUser({ user: 'admin', pwd: '密码', roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] });
- 上面的admin用户拥有查看admin数据库的权限。
- mongo内部内置了7中角色供我们使用
角色名 | 角色ID |
---|---|
数据库用户角色 | read、readWrite |
数据库管理角色 | dbAdmin、dbOwner、userAdmin |
集群管理角色 | clusterAdmin、clusterManager、clusterMonitor、hostManager |
备份恢复角色 | backup、restore |
所有数据库角色 | readAnyDatabase、readWriteAnyDatabase |
超级用户角色 | root |
内部角色 | __system |
- 这里还有几个角色间接或直接提供了系统超级用户的访问(dbOwner 、userAdmin、userAdminAnyDatabase),下面看看具体角色功能
角色ID | 功能 |
---|---|
Read | 允许用户读取指定数据库 |
readWrite | 允许用户读写指定数据库 |
dbAdmin | 允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile |
userAdmin | 允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户 |
clusterAdmin | 只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限 |
readAnyDatabase | 只在admin数据库中可用,赋予用户所有数据库的读权限 |
readWriteAnyDatabase | 只在admin数据库中可用,赋予用户所有数据库的读写权限 |
userAdminAnyDatabase | 只在admin数据库中可用,赋予用户所有数据库的userAdmin权限 |
dbAdminAnyDatabase | 只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限 |
root | 只在admin数据库中可用。超级账号,超级权限 |
命令联系
创建集合
- 在上面最后部分我们已经掌握了创建数据库和创建人及分配权限的问题。数据库之后我们就需要创建集合了。这里的集合可以理解成SQL中的Table。
- 上面我们创建了两个人 admin 、root .admin权限只有管理人员的权限。root是超管权限。我们先看看admin创建集合情况
- mongo给我们报了无权限的错误。同样的操作我们去可视化界面操作也是同样的结果
- 上面我们在可视化界面是通过admin用户去连接的。这个时候我们连接的上而且能看到admin这个。但是我们没法查看任何集合。点开只会报如下错误
- 和我们在命令行中执行的效果其实是一样的。admin用户的权限只是用来管理用户的。
- 下面我们切换root用户超管权限就可以CURD了。