greenplum给某个用户赋予整个schema下所有表的权限

greenplum 虽然是postgresql的衍生产品

但是语法上略有不同

类似    grant all on all tables in schema schemaname to someone 就不行

报错提示  ERROR: syntax error at or near "all"

所以使用了笨办法

先生成语句

select ‘grant all on table ‘ || schemaname || ‘.‘ || tablename || ‘ to usertest;‘ from pg_tables
where schemaname = ‘panasonic_compass‘

得到

"grant all on table panasonic_compass.segment_dim to usertest;"
"grant all on table panasonic_compass.wm_offline_product_weekly_fct to usertest;"
"grant all on table panasonic_compass.customer_channel_dim to usertest;"
"grant all on table panasonic_compass.wm_offline_product_daily_fct to usertest;"

把两边的双引号替换掉然后统一执行就可以了。

同理赋予视图权限

select ‘grant all on ‘ || schemaname || ‘.‘ || viewname || ‘ to usertest;‘ from pg_views
where schemaname = ‘panasonic_compass‘

换主人

select ‘alter table ‘ || schemaname || ‘.‘ || tablename || ‘ owner to usertest;‘ from pg_tables
where schemaname = ‘panasonic_compass‘
时间: 2024-11-09 01:43:18

greenplum给某个用户赋予整个schema下所有表的权限的相关文章

取得指定Schema下的表

MYSQL中取得指定Schema下所有表定义的SQL语句如下(假设Schema名为demoschema): SHOWTABLES FROM demoschema MSSQLServer中的系统表sysobjects中记录了当前系统中定义的对象,其中xtype字段等于U的记录为表定义,因此取得当前数据库中所有表定义的SQL语句如下(假设Schema名为demoschema): SELECT name FROM demoschema.sysobjects where xtype="U" O

db2dart,/DDEL导出某个schema下的表数据.

db2dart sample /ddel Table object data formatting start.Please enter Table ID or name, tablespace ID, first page, num of pages:SYSTABLES,0,0,999999 The output data file is TS0T5.DEL. DBNAME=sampleSCHEMA=E97Q7ARPTDIR=/tmp/db2dart sed 's/"//g' TS0T5.DE

检查所有PostgreSQL服务器所有数据库schema下所有表大小并统一整理到MySQL数据库中

目前开发环境共有40台左右PostgreSQL数据库服务器,现在将这些数据库服务器所有数据库的所有schema由脚本统一收集并写入MySQL数据库中,可以做个定时任务,每隔一段时间运行一次,实时收集数据 在MySQL数据库中创建元数据表 mysql> desc t_postgres_instance; +-------------------+--------------------------------------+------+-----+-------------------+-----

Case: 一个read-only 角色对某个schema下的新建的表,无需单独授权,直接拥有只读权

Case: 一个read-only 角色对某个schema下的新建的表,无需单独授权,直接拥有只读权限 首先,你要知道PostgreSQL默认schema下新建的表,对于一个普通用户不会有select的权限的,所以我需要修改PostgreSQl默认的权限,把select提前赋予普通用户,需要使用到alter default privileges这个命令 Session1 (user:postgres): #psql create role role1 password '123456' logi

Oracle数据库访问其他用户下的表,不加表所属的用户名的实现方法

一. 问题: 如何实现在Oracle数据库中访问其他用户的表时不需加表所属的用户名 二. 举例: Oracle里面的用户A,要访问用户B的表需要带用户B的前缀,如访问用户B的 TEST表,需要这样访问 select * from B.TEST;现在就是问如何才能无需添加用户名的前缀. 三. 原因: 方便访问常用表 隐藏表的用户 四. 解决方案: 1. 创建同义词(最好的方式) 语法: CREATE [PUBLIC] SYNONYM synonym_name FOR [schema.] objec

oracle中实现某个用户truncate 其它用户下的表

oracle文档中对truncate权限的要求是需要某表在当前登录的用户下,或者当前登录的用户有drop any table的权限. 但是如果不满足第一个条件的情况下,要让某用户满足第二个条件就导致权限过大了. 参考网上的讨论,可以使用存储过程来时间. 例如有两个用户 u1,u2,u1下有表 test1a 现在想要实现u2能 truncate u1下的表 test1a. 可以使用用户u1创建存储过程, create procedure u1.stgtruncate(table_name in v

spool命令、创建一个表,创建并且copy表,查看别的用户下的表,rowid行地址 索引的时候使用,表的增删改查,删除表,oracle的回收站

  1.spool命令 spool "D:\test.txt" spool off SQL> host cls 2.创建一个表 SQL> --条件(1):有创建表的权限,(2):有表空间 SQL> desc t4; 名称                                      是否为空? 类型 ----------------------------------------- -------- ------------------------

创建MySQL用户 赋予某指定库表的权限 flush privileges才能生效!!!!;

update ERROR 1364 (HY000): Field 'ssl_cipher' doesn't have a default value 建议使用GRANT语句进行授权,语句如下: grant all privileges on *.* to [email protected]'%' identified by "root"; --------------------------------------------------- GRANT SELECT,INSERT,UP

oracle创建用户赋予权限

oracle用户创建及权限设置[转载] 权限: create session create table unlimited tablespace connect resource dba 例: #sqlplus /nolog SQL> conn / as sysdba; SQL>create user username identified by password SQL> grant dba to username; SQL> conn username/password SQL