nosql不仅仅是sql

「这是我参与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

001.jpg

  • 至此,mongodb的docker安装已经完成了。下面我们就可以连接了。如果上面启动含有--auth表示mongo是区分权限的。在通过可视化工具链接的时候需要验证用户信息才可以操作的。不同用户拥有不同权限。
  • 首先我们先为连接进来的admin用户设置密码及权限

002.jpg

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创建集合情况

003.jpg

  • mongo给我们报了无权限的错误。同样的操作我们去可视化界面操作也是同样的结果

004.jpg

005.jpg

006.jpg

  • 上面我们在可视化界面是通过admin用户去连接的。这个时候我们连接的上而且能看到admin这个。但是我们没法查看任何集合。点开只会报如下错误

007.jpg

  • 和我们在命令行中执行的效果其实是一样的。admin用户的权限只是用来管理用户的。
  • 下面我们切换root用户超管权限就可以CURD了。

008.jpg

009.jpg

猜你喜欢

转载自juejin.im/post/7034721316317954056