从另一个表复制权限

E B*_*own 4 postgresql database-permissions

是否可以将用户权限从 PostgreSQL 数据库中的一个表复制到另一个表?是否只是将pg_class.relacl目标表的列值更新为源表的值,如下所示:

UPDATE pg_class
SET relacl=(SELECT relacl FROM pg_class WHERE relname='source_table')
WHERE relname='target_table';
Run Code Online (Sandbox Code Playgroud)

这似乎有效,但是我是否错过了使用此方法可能需要完成的任何其他操作或其他“陷阱”?

Tom*_*zky 5

如果您可以使用命令行而不是 SQL,那么更安全的方法是使用 pg_dump:

pg_dump dbname -t oldtablename -s \
| egrep '^(GRANT|REVOKE)' \
| sed 's/oldtablename/newtablename/' \
| psql dbname
Run Code Online (Sandbox Code Playgroud)

我假设有一个unix服务器。在 Windows 上,我会使用pg_dump -s一个文件,手动编辑它,然后将其导入数据库。

也许您还需要复制对此表所拥有的序列的权限 - pg_dump 将起作用。