首页 > 数据库 >mongodb创建了视图后会生成system.views,但是没有权限查询

mongodb创建了视图后会生成system.views,但是没有权限查询

时间:2023-07-26 17:34:16浏览次数:32  
标签:views pushmsg mongodb db system 视图 find readViewCollection01

环境:
OS:Centos 7
mongodb:5.0.19


mongodb创建了视图后会生成system.views,但是没有权限查询

myrepl:PRIMARY> db.system.views.find()
Error: error: {
        "ok" : 0,
        "errmsg" : "not authorized on db_pushmsg to execute command { find: \"system.views\", filter: {}, lsid: { id: UUID(\"b8dad2cf-e9d1-43ab-8677-78a9ce0d3438\") }, $db: \"db_pushmsg\" }",
        "code" : 13,
        "codeName" : "Unauthorized"
}

 

解决办法(在admin用户下操作,test为超级账号):
use admin
db.runCommand({createRole: "readViewCollection01", privileges: [{resource: { db: "", collection: "system.views" }, actions: [ "find"] }],roles : []})
db.grantRolesToUser('test',['readViewCollection01']);
这样使用admin登录就可以查看了
use admin
db.auth("test","test123");

 

若使用普通用户能够访问

use admin
db.auth("test","test123");
use db_pushmsg
db.runCommand({createRole: "readViewCollection01", privileges: [{resource: { db: "", collection: "system.views" }, actions: [ "find"] }],roles : []})


myrepl:PRIMARY> db.runCommand({createRole: "readViewCollection01", privileges: [{resource: { db: "", collection: "system.views" }, actions: [ "find"] }],roles : []})
{
        "ok" : 0,
        "errmsg" : "Roles on the 'db_pushmsg' database cannot be granted privileges that target other databases or the cluster",
        "code" : 49,
        "codeName" : "InvalidRoleModification"
}

 

需要具体指定库

db.runCommand({createRole: "readViewCollection01", privileges: [{resource: { db: "db_pushmsg", collection: "system.views" }, actions: [ "find"] }],roles : []})
db.grantRolesToUser('hxl',['readViewCollection01']);
myrepl:PRIMARY> show users
{
        "_id" : "db_pushmsg.hxl",
        "userId" : UUID("f45ace6a-efde-478f-ad7b-57c490d35a0c"),
        "user" : "hxl",
        "db" : "db_pushmsg",
        "roles" : [
                {
                        "role" : "dbOwner",
                        "db" : "db_pushmsg"
                },
                {
                        "role" : "readViewCollection01",
                        "db" : "db_pushmsg"
                }
        ],
        "mechanisms" : [
                "SCRAM-SHA-1",
                "SCRAM-SHA-256"
        ]
}

 

这样就可以使用普通用户hxl验证访问system.views表了
[root@localhost key]# /usr/local/services/mongodb/bin/mongo 192.168.1.105:29001
use db_pushmsg
db.auth("hxl","hxl123");

myrepl:PRIMARY> db.system.views.find()
{ "_id" : "db_pushmsg.orderInfo", "viewOn" : "order", "pipeline" : [ { "$match" : { "orderTime" : { "$gte" : ISODate("2022-01-26T00:00:00Z") } } }, { "$sort" : { "price" : -1 } }, { "$limit" : 10 }, { "$project" : { "_id" : 0, "orderNo" : 1, "price" : 1, "orderTime" : 1 } } ] }

 

标签:views,pushmsg,mongodb,db,system,视图,find,readViewCollection01
From: https://www.cnblogs.com/hxlasky/p/17583099.html

相关文章

  • microstation打开obj文件之后,默认是哪种视图?
     Obj其实一种mesh文件。。一整个obj是一整个mesh吗?能不能把不同的mesh进行分组,赋上名字,属性等信息。。这个信息存贮在.mtl文件里?还是存储在Obj里?......
  • 数据分享|SAS与eviews用ARIMA模型对我国大豆产量时间序列预测、稳定性、白噪声检验可
    全文链接:http://tecdat.cn/?p=31480最近我们被客户要求撰写关于ARIMA的研究报告,包括一些图形和统计输出。我国以前一直以来都是世界上大豆生产的第一大国。但由于各国的日益强大,导致我国豆种植面积和产量持续缩减。因此,预测我国的大豆产量对中国未来的经济发展有着极其重要的作......
  • MongoDB 教程二: 添加, 删除,查询 shell命令
       MongoDBShell常用操作命令MonoDB shell命令操作语法和JavaScript很类似,其实控制台底层的查询语句都是用JavaScript脚本完成操作的。 Ø数据库//1、Help查看命令提示helpdb.help();db.yourColl.help();db.youColl.find().help();rs.help();//2、切换/创建......
  • .net core mongodb增删改查
    .NETCoreMongoDB增删改查实现指南作为一名经验丰富的开发者,我将为你解释如何使用.NETCore和MongoDB来实现数据的增删改查操作。在本文中,我将为你提供一个整体的流程,并提供每一步需要的代码和代码注释。整体流程下面是实现.NETCoreMongoDB增删改查的整体流程,我们将使用C#编......
  • 在Centos7安装Mongodb
    背景为了创建一个关于nodejs项目,选取mongodb作为数据库使用。WindowsC盘还剩1GB,于是决定装到Centos7服务器上。安装下载安装包:https://www.mongodb.com/try/download/community-kubernetes-operator拖拽安装包:解压缩:tar-zxvfmongodb-linux-x86_64-rhel70-6.0.8.tgz......
  • Django学习笔记:第四章django的视图
    1.视图函数用于处理客户端的请求并生成响应数据。在属兔中使用函数处理请求的方式,被称为视图函数,也叫作FBV(FunctionBaseViews).一个简单的视图函数:在views.py里面配置fromdjango.httpimportHttpResponse#导入HttpResponse类defindex(request):#接收HttpRequest......
  • 卸载MongoDB
    如何卸载MongoDB简介MongoDB是一个流行的开源NoSQL数据库,但有时候我们需要卸载它。本文将介绍如何卸载MongoDB,并提供了详细的步骤和相关代码。卸载流程下面是卸载MongoDB的步骤:步骤描述1停止MongoDB服务2删除MongoDB数据目录3删除MongoDB安装目录4删除M......
  • MongoDB
    1.MongoDB入门1.1MongoDB简介MongoDB是一个开源、高性能、无模式的文档型数据库。设计的目的是简化开发和方便扩展,是NOSQL数据库的一种,是最像关系型数据库的非关系型数据库。MongoDB支持的数据结构非常松散,是一种类似于JSON格式名叫BSON,既可以存储比较复杂的数据类型,又相当灵......
  • Django学习笔记:第三章D的路由和视图
    1.网站的入口--路由和视图URL是网站Web服务的入口。用户在浏览器输入URL发出请求后,django会根据路由系统,运行对应的视图函数,然后返回信息到浏览器中。1.1认识路由创建项目时,会自动生成urls.文件,文件中定义了项目的路由信息,成为项目的路由解析入口。在自建的应用中可以手动配置......
  • mongodb写入性能
    MongoDB写入性能优化作为一名经验丰富的开发者,我很高兴能够教会你如何实现MongoDB的写入性能优化。在这篇文章中,我将向你展示整个优化流程,并提供每一步所需的代码和相应的注释。优化流程下表展示了优化MongoDB写入性能的流程:步骤代码说明1.选择合适的索引db.collec......