我正在与具有组、架构、默认权限的Redshit授权进行斗争。当我尝试检查是否一切都是正确的使用HAS_TABLE_PRIVILEGE
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我明白了:
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.这里到底发生了什么?
发布于 2016-11-08 12:15:05
我尝试了这一点,pg_tables的第一个结果查询失败了。在我的例子中,这是因为我需要显式地声明每个表在哪个模式中。这对我起了作用:
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;https://stackoverflow.com/questions/40482137
复制相似问题