首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >重传授权验证HAS_TABLE_PRIVILEGE失败

重传授权验证HAS_TABLE_PRIVILEGE失败
EN

Stack Overflow用户
提问于 2016-11-08 08:24:37
回答 1查看 1.2K关注 0票数 4

我正在与具有组、架构、默认权限的Redshit授权进行斗争。当我尝试检查是否一切都是正确的使用HAS_TABLE_PRIVILEGE

代码语言:javascript
复制
select tablename, 
   HAS_TABLE_PRIVILEGE('analyst', tablename, 'select') as select,
   HAS_TABLE_PRIVILEGE('analyst', tablename, 'insert') as insert,
   HAS_TABLE_PRIVILEGE('analyst', tablename, 'update') as update,
   HAS_TABLE_PRIVILEGE('analyst', tablename, 'delete') as delete, 
   HAS_TABLE_PRIVILEGE('analyst', tablename, 'references') as references 
from pg_tables
where schemaname='datalab'
order by tablename

我明白了:

代码语言:javascript
复制
An error occurred when executing the SQL command:
select tablename, 
   HAS_TABLE_PRIVILEGE('analyst', tablename, 'select') as select,
   HAS_TABLE_PRIVILEGE('analyst', tablena...

[Amazon](500310) Invalid operation: relation "dss__transaction" does not exist;

Execution time: 0.2s
1 statement failed.

这里到底发生了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-08 12:15:05

我尝试了这一点,pg_tables的第一个结果查询失败了。在我的例子中,这是因为我需要显式地声明每个表在哪个模式中。这对我起了作用:

代码语言:javascript
复制
WITH cte AS 
(
SELECT schemaname+'.'+tablename AS table_name
FROM pg_tables
WHERE schemaname = 'datalab'
)
SELECT table_name, 
   HAS_TABLE_PRIVILEGE('analyst', table_name, 'select') AS select,
   HAS_TABLE_PRIVILEGE('analyst', table_name, 'insert') AS insert,
   HAS_TABLE_PRIVILEGE('analyst', table_name, 'update') AS update,
   HAS_TABLE_PRIVILEGE('analyst', table_name, 'delete') AS delete, 
   HAS_TABLE_PRIVILEGE('analyst', table_name, 'references') AS references 
FROM cte
ORDER BY table_name ASC;
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40482137

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档