热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

MongoDB用户权限管理

MongoDB权限说明权限误区:并不是说下面的排序就证明权限越来越大除了readWrite权限用户外(root权限用户也包括),其它用户都不具备对数据库的写入权限,除read权限外

MongoDB权限说明

权限误区:并不是说下面的排序就证明权限越来越大除了 readWrite 权限用户外(root权限用户也包括),其它用户都不具备对数据库的写入权限,除 read 权限外,其它用户都不具备对数据库中的读权限,每个权限的功能各不一样(除root外)

普通用户

普通用户只是拥有下面的读写权限

权限说明
Read允许用户读取指定数据库
readWrite允许用户读写指定数据库

管理用户

管理用户具备下面说明的一些操作权限

权限说明
dbAdmin允许用户在指定数据库中指定管理函数,如(索引创建、删除、查看统计访问system.profile)
userAdmin允许用户向system.users集合写入,可以找指定数据里面创建、删除和管理用户
clusterAdmin只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限

授权用户

以下用户主要是为其它用户赋予相应的权限

权限说明
readAnyDatabase只在admin数据库中可用,赋予用户所有数据库的读权限
readWriteAnyDatabase只在admin数据库中可用,赋予用户所有数据库的读写权限
userWriteAnyDatabase只在admin数据库中可用,赋予用户所有数据库的userAdmin权限
dbAdminAnyDatabase只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限

超级管理员

可以无所不能,为所欲为

权限说明
root只在admin数据库中可用,超级管理员

mongodb安装好后第一次进入是不需要密码的,也没有任何用户,直接连接进入即可

/usr/local/mongodb/bin/mongo --host 192.168.31.215 --port 27018

创建管理用户

> use adminswitched to db admin> db.createUser ( {... user:"manage",... pwd:"123456",... roles:[ { role:"root", db:"admin" } ]... }... )
#返回以下信息代表创建成功Successfully added user: { "user" : "manage", "roles" : [ { "role" : "root", "db" : "admin" } ]}

退出登录,然后在mongodb配置文件中开启认证

vim /usr/local/mongodb/27018/conf/mongod.confsecurity:   authorization: enabled  JavascriptEnabled: true

重启mongodb

/usr/local/mongodb/bin/mongod --shutdown -f /usr/local/mongodb/27018/conf/mongod.conf /usr/local/mongodb/bin/mongod -f /usr/local/mongodb/27018/conf/mongod.conf

连接mongodb

/usr/local/mongodb/bin/mongo --host 192.168.31.215 --port 27018MongoDB shell version v4.2.0connecting to: mongodb://192.168.31.215:27018/?compressors=disabled&gssapiServiceName=mongodbImplicit session: session { "id" : UUID("fc77266a-b2ff-4eb0-b6ca-c493c7c29143") }MongoDB server version: 4.2.0> use admin                     #进入admin库中先进行账号认证switched to db admin        > db.auth('manage','123456') #认证账号,值返回1代表认证成功1

mongdb库创建读写用户

> db.createUser( {... user:"zhangsan",... pwd:"zhangsan",... roles:[ { role:"readWrite", db:"mongdb" } ]... }... )Successfully added user: { "user" : "zhangsan", "roles" : [ { "role" : "readWrite", "db" : "mongdb" } ]}

验证创建的zhangsan用户(不需要退出登录)

> use adminswitched to db admin> db.auth('zhangsan','zhangsan')1> show dbs              #查看数据库,因为mongdb数据库存储数据,所以看不到> use mongdb            #直接 use 到mongdb数据库中switched to db mongdb
#插入 json 格式文档到 coll 集合中> db.coll.insert({"name": "Zhangsan","url": "http://abcops.cn","age": 25,"isNonProfit": true,})WriteResult({ "nInserted" : 1 })> show collections      #查看已存在集合coll> db.coll.find() #读取集合中的数据{ "_id" : ObjectId("5d8b24c2f1c33f4950f2c5df"), "name" : "Zhangsan", "url" : "http://abcops.cn", "age" : 25, "isNonProfit" : true }

以上完成了读写权限的验证

一个用户多个权限

为 lisi 用户授权 01db read权限 02db readWrite 03db dbAdmin权限 04db userAdmin权限

这次先把数据库创建出来

> use adminswitched to db admin> db.auth('manage','123456')1
> use 01dbswitched to db 01db> db.coll.insert({"name": "01db","url": "http://abcops.cn","age": 25,"isNonProfit": true,})WriteResult({ "nInserted" : 1 })
> use 02dbswitched to db 02db> db.coll.insert({"name": "02db","url": "http://abcops.cn","age": 25,"isNonProfit": true,})WriteResult({ "nInserted" : 1 })
> use 03dbswitched to db 03db> db.coll.insert({"name": "03db","url": "http://abcops.cn","age": 25,"isNonProfit": true,})WriteResult({ "nInserted" : 1 })
> use 04dbswitched to db 04db> db.coll.insert({"name": "04db","url": "http://abcops.cn","age": 25,"isNonProfit": true,})WriteResult({ "nInserted" : 1 })

创建用户并授权

> db.createUser( {... user:"lisi",... pwd:"123456",... roles: [ { role:"read",db:"01db" },... { role:"readWrite",db:"02db" },... { role:"dbAdmin",db:"03db" },... { role:"userAdmin",db:"04db" } ]... }... )Successfully added user: { "user" : "lisi", "roles" : [ { "role" : "read", "db" : "01db" }, { "role" : "readWrite", "db" : "02db" }, { "role" : "dbAdmin", "db" : "03db" }, { "role" : "userAdmin", "db" : "04db" } ]}

查看所有用户

> show users{ "_id" : "admin.admin", "userId" : UUID("9958faa5-7132-4146-8775-a001e47fe7f8"), "user" : "admin", "db" : "admin", "roles" : [ { "role" : "root", "db" : "admin" } ], "mechanisms" : [ "SCRAM-SHA-1" ]}{ "_id" : "admin.lisi", "userId" : UUID("bc8e5dc7-2f8c-40c1-8190-cea4951ae4a1"), "user" : "lisi", "db" : "admin", "roles" : [ { "role" : "read", "db" : "01db" }, { "role" : "readWrite", "db" : "02db" }, { "role" : "dbAdmin", "db" : "03db" }, { "role" : "userAdmin", "db" : "04db" } ], "mechanisms" : [ "SCRAM-SHA-1" ]}{ "_id" : "admin.manage", "userId" : UUID("e1b34f57-06f2-4ef1-b23a-2d46a3964fbf"), "user" : "manage", "db" : "admin", "roles" : [ { "role" : "root", "db" : "admin" } ], "mechanisms" : [ "SCRAM-SHA-1" ]}{ "_id" : "admin.micvs", "userId" : UUID("1f4837c7-8c14-40d4-8a21-d621e0bcc278"), "user" : "micvs", "db" : "admin", "roles" : [ { "role" : "dbAdminAnyDatabase", "db" : "admin" } ], "mechanisms" : [ "SCRAM-SHA-1", "SCRAM-SHA-256" ]}{ "_id" : "admin.zhangsan", "userId" : UUID("1003726b-c7fc-44e6-b001-b5c828bfb40d"), "user" : "zhangsan", "db" : "admin", "roles" : [ { "role" : "readWrite", "db" : "mongdb" } ], "mechanisms" : [ "SCRAM-SHA-1" ]}



推荐阅读
  • 本文探讨了MariaDB在当前数据库市场中的地位和挑战,分析其可能面临的困境,并提出了对未来发展的几点看法。 ... [详细]
  • Windows服务与数据库交互问题解析
    本文探讨了在Windows 10(64位)环境下开发的Windows服务,旨在定期向本地MS SQL Server (v.11)插入记录。尽管服务已成功安装并运行,但记录并未正确插入。我们将详细分析可能的原因及解决方案。 ... [详细]
  • 本文深入探讨 MyBatis 中动态 SQL 的使用方法,包括 if/where、trim 自定义字符串截取规则、choose 分支选择、封装查询和修改条件的 where/set 标签、批量处理的 foreach 标签以及内置参数和 bind 的用法。 ... [详细]
  • MongoDB集群配置:副本集与分片详解
    本文详细介绍了如何在MongoDB中配置副本集(Replica Sets)和分片(Sharding),并提供了具体的步骤和命令,帮助读者理解并实现高可用性和水平扩展的MongoDB集群。 ... [详细]
  • 根据最新发布的《互联网人才趋势报告》,尽管大量IT从业者已转向Python开发,但随着人工智能和大数据领域的迅猛发展,仍存在巨大的人才缺口。本文将详细介绍如何使用Python编写一个简单的爬虫程序,并提供完整的代码示例。 ... [详细]
  • 通过Web界面管理Linux日志的解决方案
    本指南介绍了一种利用rsyslog、MariaDB和LogAnalyzer搭建集中式日志管理平台的方法,使用户可以通过Web界面查看和分析Linux系统的日志记录。此方案不仅适用于服务器环境,还提供了详细的步骤来确保系统的稳定性和安全性。 ... [详细]
  • 探讨如何从数据库中按分组获取最大N条记录的方法,并分享新年祝福。本文提供多种解决方案,适用于不同数据库系统,如MySQL、Oracle等。 ... [详细]
  • 本文详细介绍了 MySQL 数据库中的基础操作,包括创建、查询、修改和删除数据库、表及数据的命令。通过具体的 SQL 语句示例,帮助读者快速掌握 MySQL 的基本操作。 ... [详细]
  • 本文详细介绍如何利用已搭建的LAMP(Linux、Apache、MySQL、PHP)环境,快速创建一个基于WordPress的内容管理系统(CMS)。WordPress是一款流行的开源博客平台,适用于个人或小型团队使用。 ... [详细]
  • 本文介绍了Oracle和IBM DB2数据库管理系统当前的最新版本,包括它们的主要特点、功能改进以及发布日期。文章详细探讨了两个系统在企业级应用中的表现,并提供了对各自版本更新的重点解析。 ... [详细]
  • 本文介绍 SQL Server 的基本概念和操作,涵盖系统数据库、常用数据类型、表的创建及增删改查等基础操作。通过实例帮助读者快速上手 SQL Server 数据库管理。 ... [详细]
  • MySQL 基础操作与优化
    本文详细介绍了 MySQL 的基础连接、数据库及表的操作,涵盖创建、修改、删除等常用命令,并深入解析了数据类型、列属性、索引、外键和存储引擎等内容。 ... [详细]
  • MongoDB的核心特性与架构解析
    本文深入探讨了MongoDB的核心特性,包括其强大的查询语言、灵活的文档模型以及高效的索引机制。此外,还详细介绍了MongoDB的体系结构,解释了其文档、集合和数据库的层次关系,并对比了MongoDB与传统关系型数据库(如MySQL)的逻辑结构。 ... [详细]
  • 本文探讨了2019年前端技术的发展趋势,包括工具化、配置化和泛前端化等方面,并提供了详细的学习路线和职业规划建议。 ... [详细]
  • 近期参与了一个旨在提高在线平台大规模查询响应速度的项目,预计处理的数据量为2-3亿条,数据库并发量约为每秒1500次,未来可能增至3000次。通过对比Redis和MongoDB,最终选择了MongoDB,因其具备优秀的横向扩展性和GridFS支持下的Map/Reduce功能。 ... [详细]
author-avatar
大帅哥晶晶_527
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有