sql - 检查 Postgres 上的外部表所有者

标签 sql postgresql

我在 Postgres 上有一个外部表,链接到另一个服务器。我试图在此表上进行选择,但出现此错误:

ERROR:  permission denied for relation whitelist

有谁知道如何检查外部表的所有权吗? 我已经试过了,但它只返回有关本地表的信息...

select t.table_name, t.table_type, c.relname, c.relowner, u.usename
from information_schema.tables t
join pg_catalog.pg_class c on (t.table_name = c.relname)
join pg_catalog.pg_user u on (c.relowner = u.usesysid)
where t.table_schema='schema_name';

最佳答案

任何管理工具都应该能够告诉您谁拥有外部表(或任何其他数据库对象)。在 pgAdmin 中,当您在对象浏览器中选择外部表时,所有者会出现在“属性”选项卡中,当您运行 \dE 时,psql 将报告所有者。

如果您真的需要查询,应该这样做:

SELECT
  oid::regclass,
  pg_get_userbyid(relowner)
FROM pg_class
WHERE relkind = 'f'

关于sql - 检查 Postgres 上的外部表所有者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39752625/

相关文章:

PostgreSQL 9.3 : missing FROM-clause entry for table

postgresql - Postgres 会自动缓存大表中的 "active"条记录吗?

MySQL 在子查询中插入自动生成的列

mysql - 在mysql中加入同一个表

postgresql - 有条件的松散索引搜索postgres

postgresql - Postgres INSERT IF参数不为空

sql - 连接中的排序表 : SQL Tuning

mysql - 从 SQL 导出的 View 更新 MS Access 中的表

mysql - 从非sql查询获取结果集

php - 选择 pg_fetch_row 数据类型