GreenPlum批量授权(PG未测试)

创建一个自定义function

create or replace function grant_all_exec(schema_name varchar,select_or_insert varchar,grantee_user varchar) returns varchar as $$
DECLARE
funcrow varchar;
BEGIN
FOR funcrow IN select 'grant '||$2||' on '||$1||'.'||tablename||' to '||$3 from  pg_tables where schemaname=$1 
LOOP
EXECUTE funcrow;
END LOOP;
return 'grant '||$2||' to '||$3||' success!';
END;
$$ language plpgsql strict ;

 select grant_all_exec('hfods','select','hfods_read')

"grant select to hfods_read success!"

使用\dp hfods.t1 来查看是否授权成功

 

本文转载于网络 如有侵权请联系删除

相关文章

  • 腾讯云音视频有奖评测 | 在线留言或提交测评,赢大疆无人机/iPhone/Switch等壕礼

    活动时间:2021年8月30日-10月15日活动地址:https://cloud.tencent.com/act/pro/video_exp?from=14941活动简介腾讯云音视频,涵盖音视频通信基础网络RT-ONE,云直播、云点播、实时音视频TRTC、即时通信IM等音视频PaaS产品,提供音视频一站式解决方案。为了进一步提升产品体验,同时也为更多音视频相关领域的技术爱好者提供一个学习、交流的平台,腾讯云音视频诚邀各位开发者参与在线留言和产品专业测评活动,就有机会赢大疆FPV无人机套装,iPhone12mini、Switch游戏机+健身环套装,索尼蓝牙耳机等大奖!立即前往了解更多测评惊喜。测评第一弹:在线留言,上墙赢好礼1.参与方式前往音视频测评活动页,点击「我要留言」,为产品点赞或针对不足提出优化建议;留言提交后产品经理进行查看筛选,被选中上墙留言区的用户可获得「留言上墙奖」,上墙留言数最多的前10名用户可赢取对应奖品;活动期间,前10名用户若是Discuz!Q站长,还能获得100元京东卡加码福利!测评第二弹:产品测评,秀出专业力成功提交产品测评报告即可抽取「幸运奖」,报告评分排名

  • Spring认证-Spring 安全架构专题教程

    本指南是SpringSecurity的入门,提供对框架设计和基本构建块的深入了解。我们只涵盖应用程序安全的基础知识。但是,通过这样做,我们可以消除使用SpringSecurity的开发人员所遇到的一些困惑。为此,我们通过使用过滤器,更一般地说,通过使用方法注释来查看在Web应用程序中应用安全性的方式。当您需要对安全应用程序的工作原理、如何对其进行自定义,或者需要了解如何考虑应用程序安全性时,请使用本指南。本指南并非旨在作为解决最基本问题以外的其他问题的手册或方法(还有其他来源),但它可能对初学者和专家都有用。SpringBoot也经常被引用,因为它为安全应用程序提供了一些默认行为,并且有助于理解它如何适应整体架构。笔记所有原则同样适用于不使用SpringBoot的应用程序。身份验证和访问控制应用程序安全归结为两个或多或少独立的问题:身份验证(你是谁?)和授权(你被允许做什么?)。有时人们会说“访问控制”而不是“授权”,这可能会让人感到困惑,但这样想是有帮助的,因为“授权”在其他地方超载。SpringSecurity的架构旨在将身份验证与授权分开,并为两者提供策略和扩展点。验证认证的主要

  • 报告:5G网络切片可能会给不法分子留下漏洞!

    据爱尔兰安全公司AdaptiveMobileSecurity的一份报告显示,由于缺乏传输层与应用层之间的映射关系,因此结合了传统技术的5G网络可能更容易受到威胁。网络切片对于实现5G的许多功能至关重要。网络切片(NetworkSlicing)是指在同一网络基础设施上,将运营商的物理网络划分为多个逻辑独立的虚拟网络,每个虚拟网络具备不同的功能特点,可以灵活的应对不同的需求和服务,这些虚拟网络相互隔离,其中一个发生故障不会影响到其它虚拟网络。研究人员发现5G网络切片可能会给不法分子留下漏洞,一旦被利用,该切片上的攻击者就能够访问另一切片上的数据,甚至在某些情况下可以访问5G供应商的核心网。AdaptiveMobile将其描述为切片上的流氓网络功能(roguenetworkfunction)。通过建立到供应商网络存储库功能(NRF)的TLS连接(NRF是供应商网络中所有5G网络功能的中央存储),流氓功能请求访问同一网络上的另一个切片,NRF检查是否允许该切片访问。由于这两个切片共享相同的网络功能,所以就NRF而言,这是一个有效的请求,并且可以为目标片生成一个令牌。然而这可能会导致恶意切片访问

  • linux top命令详解

    top命令主要用于查看进程的相关信息,同时它也会提供系统平均负载,cpu信息和内存信息。下面的截图展示了top命令默认提供的信息:系统平均负载top命令输出中的第一行是系统的平均负载,这和uptime命令的输出是一样的:13:05:49表示系统当前时间。 up7days表示系统最后一次启动后总的运行时间。 1user表示当前系统中只有一个登录用户。 loadaverage:0.01,0.04,0.00表示系统的平均负载,最后的三个数字分别表示最后一分钟的系统平均负载,最后五分钟的系统平均负载,最后十五分钟的系统平均负载。小写字母i可以控制是否显示系统平均负载信息。任务信息汇总在linux系统中,一般把进程和线程统称为任务。第二行信息是对当前系统中所有任务的统计:Tasks:270total表示当前系统的进程总数。 1running表示当前系统中有1个正在运行的进程。 269sleeping表示当前系统中有269个休眠的进程。 0stopped表示停止状态的进程数为0。 0zombie表示处于僵死状态的进程数为0。CPU信息第三行显示CPU的使用情况:这里一共有八个字段,是我们了解CPU

  • $nextTick 源码解析

    nextTick是vue中重要的性能优化方式,解析实现原理可以有助于我们更好的理解框架。nextTick的实现原理为什么vue采用异步渲染?响应式的数据for循环改变了1000次为什么视图只更新了一次?nextTick历史版本问题eventloop带这以上问题来阅读源码,有助于我们思考。 源码:/*@flow*/ /*globalsMutationObserver*/ //引入noop、handleError错误处理、isIE、isIOS、isNative方法 import{noop}from'shared/util' import{handleError}from'./error' import{isIE,isIOS,isNative}from'./env' //是否正在使用微任务 exportletisUsingMicroTask=false //需要处理的事件队列 constcallbacks=[] //设置一个标记,如果已经有timerFunc被推送到任务队列中去则不再推送 letpending=false /

  • Java中的Object类简述

    1.Object类1.1Object类概述Java中所有类的基类!!! Java中所有的类都是间接或者直接继承Object类。 Object类的引用数据类型变量可以保存Java中任意数据类型空间的首地址。Object类内规定了一些方法: StringtoString(); 当前对象建议String类型描述。默认情况是当前类所属包名.类名@十六进制内存地址 如果对于数据类型展示有要求,可以重写toString方法,在展示的方法中会默认执行toString方法inthashCode(); 内存中当前对象的唯一索引值,默认情况下是当前对象所处空间首地址的十进制展示。booleanequals(Objectobj); 比较方法,判断两个对象是否一致,Object类内默认情况下比较的方式是地址比较。 两个对象地址一致,表示肯定是相同对象。如果我们期望修改equals比较规则,可以在当前类内重写 【注意】 Java中规定,如果两个对象的equals比较方法结果为true,要求hashCode值必须一致。下列方法之后再介绍: 线程有关方法 voidwait(); voidnotify(); void

  • 电商网站开发记录(一) 项目初始化

    新建一个maven-achetype-webapp项目,建好完善后基本的目录,然后配置tomcat,在deployment里引入artifact,第一次建的时候发现没有artifact,可能是module之类的没有初始化好,当时也没有吧maven的依赖importchanges,不知道默认的webapp模板会不会自动引入初始的依赖,第二次建的时候importchanges,后deployment加artifact成功,然后启动tomcat成功.2.为了对项目实行更好的管理,使用git,先进行初始化,先建立一个.gitignore文件.gitignore文件内容 *.class#packagefile*.war *.ear#kdiff3ignore *.orig#mavenignore target/#eclipseignore .settings/ .project .classpatch#idea .idea/ /idea/ *.ipr *.iml *.iws#tempfile*.log *.cache *.diff *.patch *.tmp#systemignore .DS_St

  • 《从案例中学习JavaScript》之酷炫音乐播放器(二)

    上一节传送门:http://www.jianshu.com/p/14dd440a8bc3本节实现了:歌曲切换图标转动显示歌曲信息Paste_Image.png下一节计划:添加音轨进度条Paste_Image.png小demo已经写好,不用担心跳票啥的。继续上一节的内容,我们在绘制好播放器的雏形之后,就可以考虑将一些工具性质的方法封装起来了,比如,我们多次用到dom和_center方法,不如将它们归为一类,做为一个工具包来调用。上代码:varutils={ _center:function(dom){ dom.style.position='absolute'; dom.style.top='50%'; dom.style.left='50%'; dom.style['margin-top']=-dom.offsetHeight/2+'px'; dom.style['margin-left']=-dom.offsetWidth/2+'px'; },

  • phpStudy升级mysql版本为mysql-5.7.17

    phpStudy2016.11.03版本下载地址:官方下载地址Apache+Nginx+LightTPD+IIS php5.2php5.3 php5.5php7.0MySQLphpMyAdminMySQL-Front16种组合自由切换,是下面5个版本的合集同时支持apache/nginx/Lighttpd和IIS7/8/6我们可以看到mysql版本为5.5.53我们如何升级高版本呢?例如我们要升级到mysql-5.7.17官网下载地址:https://dev.mysql.com/downloads/mysql/ 停止mysql进程重命名MySQL_bak 备份之前的mysql数据库新建MySQL空文件夹解压mysql5.7.17到MySql文件夹复制一份 my-default.ini重命名为my.ini建议用notepad++打开my.ini# For advice on how to change settings please see # http://dev.mysql.com/doc/refman/5.7/en/server-configuration-defaults.htm

  • JS魔法堂:元素克隆、剪切技术研究

    一、前言                                   当需要新元素时我们可以通过 document.createElement 接口来创建一个全新的元素,也可以通过克隆已有元素的方式来获取一个新元素。而在部分浏览器中,通过复制来获取新元素的效率比通过 document.createElement 方式的要高一些,具体的性能比较如下:2%inIE8,butnochangeinIE6andIE7Upto5.5%inFirefox3.5andSafari46%inOpera(butnosavingsinOpera10)10%inChrome2and3%inChrome3 本篇将记录元素克隆、和剪切的相关技术,以便日后查阅。目录一坨: 二、拷贝1.Node.cloneNode2.document.importNode三、剪切1.document.adoptNode2.appendChild、insertBefore和replaceChild四、总结五、题外话——IE独有的replaceNode和swapNode方法二、拷贝                        

  • 腾讯云腾讯云企业网盘产品概述

    腾讯云企业网盘(TencentCloudEnterpriseDrive,TCED)是一款基于云端存储、围绕非结构化数据管理的企业级办公产品,可为企业用户提供文件存储、权限管理、在线协作、文件收集与分发等服务,助力企业提升数据管理效率,更大化地挖掘数据的业务价值,打通从业务到数据再到商业价值变现的整条链路。产品功能文件归档备份云上数据自动备份,本地数据一键归档,多端实时更新,为企业数字资产保驾护航。多级权限管控高灵活度、高精度权限管控,支持文件级别权限管控,实现人员与文件精细化管理。文件协作与版本管理支持多人在线协同编辑,历史版本自动生成,支持任意版本回滚。文件分发与汇总支持文件或文件夹一键外链分享,多级参数配置实现文件安全快速分发与汇总。

  • 轻松搞定JSONP跨域请求

    一、同源策略 要理解跨域,先要了解一下“同源策略”。所谓同源是指,域名,协议,端口相同。所谓“同源策略“,简单的说就是基于安全考虑,当前域不能访问其他域的东西。 一些常见的是否同源示例可参照下表: 在同源策略下,在某个服务器下的页面是无法获取到该服务器以外的数据的。例如我们在自己的网站通过ajax去获取豆瓣上https://developers.douban.com/wiki/?title=api_v2提供的接口数据。这里我们以搜索图书为例,参数链接为:https://api.douban.com/v2/book/search?q=javascript&count=1,该链接中数据为JSON格式,如下: 我通过如下代码去访问该数据:   <!DOCTYPEhtml> <htmllang="en"> <head> <metacharset="UTF-8"> <title>ajax</title> </head> <body> <divid="mydiv">

  • 【译】参考手册-React组件

    reactversion:15.4.2 React.Component 组件能够让你将UI拆分为多个独立自治并可重用的部分。在React中提供了React.Component。 概述 React.Component是一个抽象基类,直接引用React.Component无太大意义。反而,我们会用子类来继承它,并至少定义一个render()方法。 通常您将使用纯JavaScriptclass来定义一个React组件: classGreetingextendsReact.Component{ render(){ return<h1>Hello,{this.props.name}</h1>; } } 复制 如果您还没有使用ES6,可以使用React.createClass来替代。从UsingReactwithoutES6了解更多。 组件生命周期 每个组件都有几个生命周期方法,您可以不同的阶段插入自己的逻辑代码。以will开头的方法将在事情发生前被调用,以did开头的方法将在事情发生后被调用。 Mounting(挂载) 以下的方法,将在组件实例被创建和插入到DOM前被调用

  • 历史的商业行为

    我们历史中存在的宝物及财富可以说不计其数,也由此产生了非常多的富豪。而这些人大致分为两种类别:一种是有自己的技能或者智慧,通过努力的财富的累积而产生的富豪;还有一种就是敛财的大贪官。 1.和珅 说起富豪,就不能不提到他,在世界上都有名气的大贪官。他的敛财的能力实在是太过于让人吃惊,他的具体的事迹大家应该都有听说过。他的财富到底是有多少呢?他被抄家的时候,总共抄出来的家产,足足与经济水平很高的乾隆盛世时期的18年国库赋税的总体的收入大约相等。若没有他上榜,那榜单肯定是不完整 2.范蠡 范蠡这人,也是一个有名的人物,当然他最为出名的还是帮越王灭吴。但他弃政从商,并且在商业上做得风生水起,用了差不多十九年的时间,积累了难以计数的财富。不过他却是用所赚的钱,去帮助需要得到帮助的人们。简直称得上是商人的 3.端木子贡 姓端木,名赐,他是孔子的一个弟子,也是其中以贤德著称的小有名气的其中一位。他虽然自小跟着孔子学习着儒学,但是他在经商上也是颇具天赋。而数年的经营也为他挣得了足够多的财富,也给后来的孔圣人和弟子们游学传播文化提供了很大的经济上的支持。历史上有一个成语叫做“端木

  • .NET Core微服务 权限系统+工作流(一)权限系统

    一、前言 实际上权限系统老早之前我就在一直开发,大概在刚毕业没多久就想一个人写一个系统,断断续续一直坚持到现在,毕竟自己亲动手自写的系统才有收获,本篇仅介绍权限。   小小系统上不了台面,望各位大神勿喷。 二、系统介绍 目前采用的是.NetCore微服务的方式实现,本文不讨论具体的中间件主要是(ocelot+consul等),一直参考微软的  eShopOnContainers ,进行简单的实现,但是ORM是用的Dapper,并简单进行封装 传送门,当然自己也封装了一些简单的插件进行复用:传送门,如下: 三、权限系统 权限系统实现很简单,权限的划分我觉得可以分为三种: 1、菜单权限2、按钮权限3、数据权限 简单介绍下:1、菜单权限。表示用户是否能够访问该页面(角色挂钩)       2、按钮权限。表示用户是否能够操作该页面上的功能(角色挂钩)       3、数据权限。表示用户访问页面时进行数据筛选(该功能暂未实现,这个要与具体的业务结合才能写),与部门挂钩,这个不太好理解,当然一般的权限系统这个功能也不会做,举个简单例子,OA系统里面我查看我

  • 4.前期准备总结

    对第一个java程序进行总结 1.java程序编写-编译-运行的过程 编写:我们将编写的java代码保存在以".java"结尾的源文件中 编译:在cmd中找到指定的xx.java文件。使用javac命令编译我们的java源文件。格式:javac源文件名.java 运行:使用java.exe命令解释运行我们的字节码文件。格式:java类名 2.在一个java源文件中可以声明多个class。但是,只能最多有一个类声明为public的。 而且要求声明为public的类的类名必须与源文件名相同。 程序的入口是main()方法。格式是固定的。//publicstaticvoidmain(String[]args){}---->args可更换为其他名字 输出语句: System.out.println():先输出数据,然后换行 System.out.print():只输出数据 3.每一行执行语句都以";"结束。 4.编译的过程:编译以后,会生成一个或多个字节码文件。字节码文件的文件名与java源文件中的类名相同。 publicclassHelloWord{ publicst

  • 将字符串的首字母变为大写

    "bai-jia-xiu"变为"BaiJiaXiu" varstring="bai-jia-xiu" console.log("bai-jia-xiu") varstr=string.split('-') vararr=[] for(vari=0;i<str.length;i++){ toCase(str[i]) } functiontoCase(a){ vars1=a.substring(0,1); vars2=a.substring(1,a.length) vars3=s1.toUpperCase(); vars4=s3.concat(s2) arr.push(s4) } varfinshedStr=arr.map((item)=>item).join('') console.log(finshedStr) 复制

  • 【Android 进阶】Android Home 键监听

    AndroidHome键监听 Android普通键值可以直接在dispatchKeyEvent()中处理,但Home键,比较特殊,需要单独监听其广播,且必须为动态广播,其静态广播无效; 需求:Home键,设置Kill自己,但设置中有多个Activity,在每个Activiy中年监听Home键广播不现实,必须把监听广播抽取出来在同一个类中实现,考虑到BaseActivity; publicclassBaseActivityextendsActivity{ privateHomeWatcherReceivermHomeWatcherReceiver=null; privatebooleanisNeedFinish=false; @Override protectedvoidonCreate(BundlesavedInstanceState){ super.onCreate(savedInstanceState); registerReceiver(); } publicvoidsetBackFinish(booleanflag){ isNeedFinish=flag; } pri

  • 使用for循环和while循环打印九九乘法表——python

        使用for循环和while循环打印九九乘法表——python   代码如下:   1i=1 2whilei<10: 3forjinrange(1,i+1): 4sum=i*j 5print("%d*%d=%d"%(i,j,sum),end="\t") 6print("\n") 7i=i+1复制       结果演示:    

  • angular8 在componet里面跳转新的地址页面

    this.router.navigate(['/teacher/course/detail/' + id]);

  • JS-随机函数

    //alert(Math.round(3.4));//0~1:Math.round(Math.random());//0~10//alert(Math.round(Math.random()*10));//5~10//alert(Math.round(Math.random()*5+5));//10~20//alert(Math.round(Math.random()*10+10));//20~100//alert(Math.round(Math.random()*80+20));//x~yvarx=3;vary=49;//alert(Math.round(Math.random()*(y-x)+x));//0~x//alert(Math.round(Math.random()*x));//1~xalert(Math.ceil(Math.random()*x));

相关推荐

推荐阅读